C# Generic List.Any() throws System.NullReferenceException

c#-4.0 entity-framework generic-list linq

Question

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.

1
4
1/16/2013 3:14:38 PM

Accepted Answer

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

5
1/16/2013 3:17:01 PM

Popular Answer

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 nulls in the first place, assuming it's not supposed to have any null values.



Related Questions





Related

Licensed under: CC-BY-SA with attribution
Not affiliated with Stack Overflow
Licensed under: CC-BY-SA with attribution
Not affiliated with Stack Overflow