C# Lambda 返回一些空值

标签 c# .net linq lambda

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/

相关文章:

.net - wpf 本地化

c# - 一种抽象子流程成功/失败的方法

c# - 如何将 XML 数据加载到数据结构中?

C#:ToArray 性能

c# - 如何从上到下键入数据(最上面的应该是新帖子,最后一个应该是最旧的)asp.net c#

c# - 使用 C# 中的 Windows API 设置主监视器

c# - 如何将文档 xml 文件构建到适当的路径?

c# - Linq Any() 与 MoveNext()

c# - 用户可以看到 Silverlight 代码吗?

c# - 在 Silverlight 中同步填充自定义控件的 DependencyProperties