これらの StackOverflow Answersを見たことがありますが、フィルタリング リストがメモリ内にある場合、同じ結果が得られません。
私はIDのリストを持っています。データベースに存在する ID をすべて削除したいので、追加する必要がある ID のリストが残ります。つまり、where not in
Linq-To-Entities を使用して SQL クエリを実行する必要があります。問題は、その SQL を生成する代わりに、これらのメソッドがそれぞれリスト項目ごとに SQL クエリを生成することです。
var providerIds = new [] {"1130", "1", "16"};
方法 1 :
var missingProviders = (from provider in providerIds
where !JobProviders.Any(p => p.JobProviderID == provider)
select provider).ToList();
方法 2 :
var missingProviders = (from provider in providerIds
where !(from p in JobProviders select p.JobProviderID).Contains(provider)
select provider).ToList();
意図したフォームを生成するように LINQ クエリを構造化する方法はありますnot in
か、それともこれらが唯一の解決策ですか?