如果where
条件没有返回结果,如何在返回的集合中插入默认值?
from i in data.collection
where i.Type == type
select i.Count
Run Code Online (Sandbox Code Playgroud)
Jon*_*Jon 27
使用此Enumerable.DefaultIfEmpty
方法执行此操作.
示例(在方法语法中因为恕我直言不太尴尬):
data.collection.Where(i => i.Type == type)
.DefaultIfEmpty(defaultObject)
.Select(i => i.Count);
Run Code Online (Sandbox Code Playgroud)
有DefaultIfEmpty()方法.
在方法语法中,您可以像这样使用它:
data.Collection
.Where(i => i.Type == type)
.DefaultIfEmpty(yourDefaultValue)
.Select(i => i.Count);
Run Code Online (Sandbox Code Playgroud)
如果Where
过滤器未返回任何项目,则可枚举的单项目yourDefaultValue
用作Select
投影的输入.
您正在寻找DefaultIfEmpty
.
var itemCounts = from i in data.collection
where i.Type == type
select i.Count;
var itemCountsOrMinusOne = itemCounts.DefaultIfEmpty(-1);
Run Code Online (Sandbox Code Playgroud)
第一个将为您提供项目计数,或者不IEnumerable
返回任何元素。
然后第二个将为您提供项目计数,或者IEnuemrable
只是返回-1
.