如果条件没有返回结果,如何向返回的集合插入默认值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
则使用一个可枚举的项目作为Select
投影的输入。
你正在寻找DefaultIfEmpty
.
var itemCounts = from i in data.collection
where i.Type == type
select i.Count;
var itemCountsOrMinusOne = itemCounts.DefaultIfEmpty(-1);
第一个将为您提供项目计数,或者不IEnumerable
返回任何元素。
然后第二个将为您提供项目计数,或者IEnuemrable
只是返回的-1
。