2

ネストされたプロパティのいくつかを使用してIEnumerableをフィルタリングしようとしています。

私はあらゆる方法で頭を悩ませてきましたが、このクエリの解決策を見つけることができません。実際、これが可能かどうかはわかりません。

その構造はこんな感じ

Tディール ですディールにはサブカテゴリのコレクションがあります(コレクションは空の場合があります)サブカテゴリにはサブカテゴリIDがあります

メソッドに渡されるSubcategoryId=パラメーターがあるかどうかに関係なく、Dealsを選択できるようにしたいと思います。

4

2 に答える 2

5
public IEnumerable<Deal> FindDeals(IEnumerable<Deal> source, int subCategoryId)
{    
    return source.Where(d => d.Subcategories.Any(s => s.Id == subCategoryId));
}
于 2012-08-25T09:53:41.953 に答える
4

サブカテゴリのいずれかEnumerable.Anyが必要な取引を選択するために使用したいようです。

var foo = deals.Where(deal => deal.Subcategories.Any(sc => sc.Id == parameter));

が空のdeal.Subcategoriesコレクションである場合はこれで問題ありませんが、null参照の場合は、代わりにそれが爆発し、次のことが必要になることに注意してください。

var foo = deals.Where(deal => deal.Subcategories != null &&
                              deal.Subcategories.Any(sc => sc.Id == parameter));

deal.Subcategories ...または、nullにならないように修正します。これは、一般的に望ましいことです:)

于 2012-08-25T09:53:38.760 に答える