[英]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.