私はLinqとEntity Frameworkを使用しています。私はページエンティティを持っています。これは、タグエンティティと多対多の関係を持っています。変数付きLinq式の構築
提供されたすべてのタグに一致するすべてのページを取得するLinqクエリを作成したいとします(Int64 [])。
さまざまなWhereInおよびBuildContainsExpressionの例を試しましたが、期待どおりに動作していません。
私は今、タグのそれぞれをループしようと式のリストを構築しています:
foreach (Int64 item in Tags)
{
Expression<Func<Pages, bool>> tagFilter = c => c.Tags.Any(x => x.TagID == item);
exp.Add(tagFilter);
}
はしかし、私はそれがいずれかを使用しているいずれかのため、ローカル変数「項目」は、クエリをいじりいると思いますクエリが実行されるタグ、またはそれらのどれもが、しかし、私はこのようにそれらを指定した場合:
Expression<Func<Pages, bool>> tagFilter1 = c1 => c1.Tags.Any(x => x.TagID == 70);
exp.Add(tagFilter1);
Expression<Func<Pages, bool>> tagFilter2 = c1 => c1.Tags.Any(x => x.TagID == 130);
exp.Add(tagFilter2);
Expression<Func<Pages, bool>> tagFilter3 = c1 => c1.Tags.Any(x => x.TagID == 77);
exp.Add(tagFilter3);
実際の数は「70」とは、例えば、それは魔法のように動作を使用します。私は基本的にリストに式を格納して、And()にLinqKitを使用しています。
この動的な状態を維持する方法はありますか?
lambdaを使って作業するときは、誰もが少なくともこの問題に遭遇するようです。実際には、変数をforeach/lambdaで直接使用するコンパイラ警告を作成する必要があります。 – bobbymcr
ありがとうございました! –