条件が結果を返さない場合、返されたコレクションにデフォルト値を挿入する方法は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);
フィルターがアイテムを返さない場合、Where1 アイテムの列挙可能な がプロジェクション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。