条件が結果を返さない場合、返されたコレクションにデフォルト値を挿入する方法はwhere
?
from i in data.collection
where i.Type == type
select i.Count
Enumerable.DefaultIfEmpty
メソッドを使用してこれを行います。
例(IMHOの方が扱いにくいため、メソッド構文で):
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
1 アイテムの列挙可能な がプロジェクションyourDefaultValue
の入力として使用されます。Select
を探していDefaultIfEmpty
ます。
var itemCounts = from i in data.collection
where i.Type == type
select i.Count;
var itemCountsOrMinusOne = itemCounts.DefaultIfEmpty(-1);
1 つ目はアイテム数、またはIEnumerable
要素を返さない を返します。
2 番目は、アイテムの数、またはIEnuemrable
単に を返す を返します-1
。