如果where
条件没有返回结果,如何在返回的集合中插入默认值?
from i in data.collection
where i.Type == type
select i.Count
答案 0 :(得分:23)
使用Enumerable.DefaultIfEmpty
方法执行此操作。
示例(在方法语法中因为恕我直言不太尴尬):
data.collection.Where(i => i.Type == type)
.DefaultIfEmpty(defaultObject)
.Select(i => i.Count);
答案 1 :(得分:8)
DefaultIfEmpty() 方法。
在方法语法中,您可以像这样使用它:
data.Collection
.Where(i => i.Type == type)
.DefaultIfEmpty(yourDefaultValue)
.Select(i => i.Count);
如果Where
过滤器未返回任何项目,则使用yourDefaultValue
的可枚举项目作为Select
投影的输入。
答案 2 :(得分:4)
您正在寻找DefaultIfEmpty
。
var itemCounts = from i in data.collection
where i.Type == type
select i.Count;
var itemCountsOrMinusOne = itemCounts.DefaultIfEmpty(-1);
第一个会给你项目计数,或者IEnumerable
不会返回任何元素。
第二个会给你项目计数,或者只返回IEnuemrable
的{{1}}。