10

如果条件没有返回结果,如何向返回的集合插入默认值where

from i in data.collection
where i.Type == type
select i.Count
4

3 回答 3

30

使用Enumerable.DefaultIfEmpty方法来做到这一点。

示例(在方法语法中,因为恕我直言不那么尴尬):

data.collection.Where(i => i.Type == type)
               .DefaultIfEmpty(defaultObject)
               .Select(i => i.Count);
于 2012-11-27T12:23:33.813 回答
9

DefaultIfEmpty()方法。

在方法语法中,您可以像这样使用它:

data.Collection
    .Where(i => i.Type == type)
    .DefaultIfEmpty(yourDefaultValue)
    .Select(i => i.Count);

如果Where过滤器没有返回任何项目,yourDefaultValue则使用一个可枚举的项目作为Select投影的输入。

于 2012-11-27T12:24:54.827 回答
5

你正在寻找DefaultIfEmpty.

var itemCounts = from i in data.collection
                 where i.Type == type
                 select i.Count;

var itemCountsOrMinusOne = itemCounts.DefaultIfEmpty(-1);

第一个将为您提供项目计数,或者不IEnumerable返回任何元素。

然后第二个将为您提供项目计数,或者IEnuemrable只是返回的-1

于 2012-11-27T12:24:04.890 回答