[英]Default value for linq select item if query didn't return anything
如果where
条件未返回结果,如何将默认值插入返回的集合?
from i in data.collection
where i.Type == type
select i.Count
使用Enumerable.DefaultIfEmpty
方法来执行此操作。
示例(使用方法语法,因为它的恕我直言不太尴尬):
data.collection.Where(i => i.Type == type)
.DefaultIfEmpty(defaultObject)
.Select(i => i.Count);
有DefaultIfEmpty()方法。
在方法语法中,可以这样使用它:
data.Collection
.Where(i => i.Type == type)
.DefaultIfEmpty(yourDefaultValue)
.Select(i => i.Count);
如果Where
过滤器未返回任何项目,则使用yourDefaultValue
枚举的yourDefaultValue
将用作Select
投影的输入。
您正在寻找DefaultIfEmpty
。
var itemCounts = from i in data.collection
where i.Type == type
select i.Count;
var itemCountsOrMinusOne = itemCounts.DefaultIfEmpty(-1);
第一个将为您提供项目计数,或一个不返回任何元素的IEnumerable
。
然后第二个将为您提供项目计数,或者是一个IEnuemrable
,它仅返回-1
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.