繁体   English   中英

如果查询未返回任何内容,LINQ选择项的默认值

[英]Default value for linq select item if query didn't return anything

如果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枚举的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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM