[英]LINQ FirstOrDefault or DefaultIfEmpty?
我对如何使用 FirstOrDefault 或 DefaultIfEmpty 感到困惑。
下面的片段可能是空的,但如果不是,我肯定想要第一个。
var vThr = _context.PostThrs.FirstOrDefault(m =>
m.ThrZero == zero
&& m.ThrText.Substring(0,8) == "SERVICE-");
如果它是空的,我希望结果是“空的”。 我该怎么做? 我已经对此进行了一些尝试,但我不确定分享是否有帮助。
编辑:发布后,我意识到这个问题并没有真正起作用,因为你不能在结果中插入单个字符串/
总结:
.FirstOrDefault() |
.DefaultIfEmpty() |
---|---|
使用第一个满足的项目的结果进行查询。 | 使用IEnumerable 的结果进行查询。 如果序列为空,则用于初始化默认项。 |
- 如果有项目已履行,则返回第一个T 项目。 |
如果有项目已履行,则将至少一个或多个T 项目返回为IEnumerable<T> 。 |
- 如果不是,则返回default 。 |
- 如果不是,则使用defaultValue 参数初始化为IEnumerable<T> 。 返回带有单个项目 ( Count = 1) 的IEnumerable<T> 。 |
因此,根据您的要求,您正在寻找.FirstOrDefault()
来检查返回的结果是否为null
并执行以下实现。
没有涵盖您想要在null
时为变量分配“空”字符串的部分,并且您发现这样做是不可行的,因为变量是T
会与类型冲突。
参考
使用 FirstOrDefault() 它会找到条件元素的第一个匹配项,但如果不是,则只返回 null
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.