opencall.Priority =
averages.Where(x => x.ProblemCode == opencall.ProblemCode)
.SingleOrDefault().Priority;
上面的 lambda 语句返回了一些空值,因为 ProblemCode 并不总是保证在平均值列表中。
我如何重写此语句,以便在这种情况下将 opencall.Priority 设置为“”而不是应用程序抛出错误?
最佳答案
您必须为您的引用类型提供一个新的默认值,而不是 null
。
opencall.Priority = averages.Where(x => x.ProblemCode == opencall.ProblemCode)
.Select(x => x.Priority)
.DefaultIfEmpty("")
.Single();
那么 Priority
是一个 string
吗?请注意,您不再需要 SingleOrDefault
,因为查询永远不会抛出异常,因为当您提供 DefaultIfEmpty
时它是空的。
关于C# Lambda 返回一些空值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14733308/