3

1 対多のテーブルでドキュメント ID を取得しようとしています。where 句で List を使用して、リスト内のすべての要素に関連付けられているすべての ID を検索したいと考えています。

List<int> docIds = (from d in doc
                      where _tags.Contains(d.Tags)
                      select d.id).ToList<int>();

内容が間違っているに違いないことはわかっていますが、うまくいきません。foreach を試してみると、ドキュメントにすべてのタグが含まれているかどうかを確認する方法がわかりません。

4

2 に答える 2

2

すべてをリストにd.Tags含める必要がある場合は、次のことを試すことができます。_tags

List<int> docIds = (from d in doc
                      where d.Tags.All(t => _tags.Contains(t))
                      select d.id).ToList<int>();

必要な場合は、必要なd.Tagsすべてのアイテムが含まれている_tags必要があります。

List<int> docIds = (from d in doc
                      where _tags.All(t => d.Tags.Contains(t))
                      select d.id).ToList<int>();

しかし、EFによってSQLにどのように変換されるかはわかりません。そのため、クライアントサイトで評価する必要があるかもしれません。

于 2012-08-20T08:27:28.337 に答える
0

結合を使用します:

List<int> docIds = (from d in doc
from t in tags
where d.Tags.Contains(t)
select d.id).ToList<int>();
于 2012-08-20T08:31:38.347 に答える