それぞれ1対多の関係を持つ2つのテーブル(TABLE1、TABLE2-一意です)と、両方のテーブルのID列間の外部キーがあります。
linq2sqlを使用して、すべてのTABLE1エントリを選択しようとしています。これにより、対応するTABLE2値に、渡すリストに少なくとも1つの項目が含まれるようになります。
これは、 LINQPad (すばらしいプログラム)でテストするために使用していたサンプルコードですが、エラーNotSupportedException:クエリ演算子「Any」に使用されるサポートされていないオーバーロードが発生します。
long[] items = { 3, 5, 8 };
var predicate = PredicateBuilder.False<TABLE2>();
foreach (long i in items)
{
long t = i;
predicate = predicate.Or(att => att.ID == t);
}
//TABLE2.Where(predicate).Dump(); //works like a charm
IQueryable query =
from t1 in TABLE1
where t1.TABLE2.AsQueryable().Any(predicate) //problem with this line
select a;
query.Dump();
アップデート
LinqPadでLinqKitを使用する場合は、LinqKit.dllへの参照を追加し、[PredicateBuilderを含める]をオフにしてから、[追加の名前空間のインポート]タブでLinqKitを追加します。