簡體   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