如果查询未返回任何内容,则linq select item的默认值

kul*_*_mi 7 c# linq

如果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)


Hon*_*tan 8

DefaultIfEmpty()方法.

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

data.Collection
    .Where(i => i.Type == type)
    .DefaultIfEmpty(yourDefaultValue)
    .Select(i => i.Count);
Run Code Online (Sandbox Code Playgroud)

如果Where过滤器未返回任何项目,则可枚举的单项目yourDefaultValue用作Select投影的输入.


Raw*_*ing 5

您正在寻找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.