1

linqの子コレクションに対してIN句クエリを実行する方法を探しています。

次のような例があります。

Entity: Product.CategoryAssignments - this is an IList<Category> that the product is assigned to. Product can be assigned to multiple categories.

カテゴリのリストに一致するすべての製品を取得したい、つまり

IList<Category> selectedCategories = GetUsersSelectedCategories();

//次のようなことを行う方法

IList<Products> products = from p in repository where p.CategoryAssignments.Contains(?) select p;

何かアドバイスはありますか?

4

1 に答える 1

6

質問を誤解しない限り、2つのリストの結果を実際に比較しているため、Linqで「in」ステートメントを実行する方法についての答えは実際にはないと思います。

私は日常的にLinqを使用しないため(私はNH Criteriaの人です)、これについては専門家ではありませんが、ここで本当に必要なのは、ユニオンまたは動的に構築されたORステートメントのセットです。

「カテゴリがこれまたはこれまたはこれであるすべての製品を私に与えてください」

または

「カテゴリがこれであるすべての製品を私に与えてください」
ユニオン
「カテゴリがこれであるすべての製品を私に与えてください」
ユニオン
「私にすべての製品を与えてくださいカテゴリはこれです」

私はLinqにそれほど精通しているわけではないので、このためのステートメントを作成しようとはしませんが、インターネット上で十分に文書化された問題であると確信していますか?:)

[編集]行って調べました-このようなものは機能しますか?

var query = 
from p in products
where p.Categories.Any(c=> selectedCategories.Contains(c))
select p;

カテゴリは、比較対象のカテゴリのリストです。

于 2010-02-06T12:23:48.067 に答える