繁体   English   中英

LINQ FirstOrDefault 还是 DefaultIfEmpty?

[英]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()

.DefaultIfEmpty()

使用 FirstOrDefault() 它会找到条件元素的第一个匹配项,但如果不是,则只返回 null

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM