C#Lambda返回一些空值

mar*_*rry 8 .net c# linq lambda

opencall.Priority = 
averages.Where(x => x.ProblemCode == opencall.ProblemCode)
.SingleOrDefault().Priority;
Run Code Online (Sandbox Code Playgroud)

上面的lambda语句返回一些空值,因为ProblemCode并不总是保证在averages列表中.

如何重写此语句,以便在这种情况下将opencall.Priority设置为""而不是应用程序抛出错误?

Tim*_*ter 16

您必须为引用类型提供新的默认值,而不是null.

opencall.Priority = averages.Where(x => x.ProblemCode == opencall.ProblemCode)
                            .Select(x => x.Priority)
                            .DefaultIfEmpty("")
                            .Single(); 
Run Code Online (Sandbox Code Playgroud)

Priority是一个string?请注意,您不再需要SingleOrDefault,因为查询永远不会抛出异常,因为当您提供a时它是空的DefaultIfEmpty.