Search code examples
c#.netlinqlambda

C# Lambda returns some null values


opencall.Priority = 
averages.Where(x => x.ProblemCode == opencall.ProblemCode)
.SingleOrDefault().Priority;

The above lambda statement returns some nulls because ProblemCode isn't always guaranteed to be in the averages list.

How can I rewrite this statement so that if that is the case opencall.Priority is set to "" instead of the application throwing an error?


Solution

  • You have to provide a new default value for your reference type, other than null.

    opencall.Priority = averages.Where(x => x.ProblemCode == opencall.ProblemCode)
                                .Select(x => x.Priority)
                                .DefaultIfEmpty("")
                                .Single(); 
    

    So Priority is a string? Note that you don't need SingleOrDefault anymore since the query can never throw an exception, because it will return your provided fallback value.