Consider the following partial view code snippet
List<sellingPrice> Prices = ViewBag.Prices;
foreach (var mgmp in mg.messageGroup.messageGroupMessagePLUs)
{
if (Prices.Any(x => x.pluId == mgmp.messagePLU.plu.pluId))
{
//do stuff
}
}
For specific products in the db, the line
if (Prices.Any(x => x.pluId == mgmp.messagePLU.plu.pluId))
throws a System.NullReferenceException. Inspecting the code shows that mgmp is an object and Prices contains elements. However, the value of x is null. Now, I am under the impression that I am simply testing whether or not any "x" exists that satisfies my test, not asking it to return an "x".
It's a very irritating problem. Hopefully someone can point out the really obvious solution.
Try:
Prices.Any(x => x!=null && x.pluId == mgmp.messagePLU.plu.pluId)
You might need to do other null checks if for example .messagePLU can be null
The most likely reason why this happens is because one or more items in the ViewBag.Prices
is null
. Check x
for null
, or see why prices contain null
s in the first place, assuming it's not supposed to have any null
values.