linq でユニオンを使用する最良の方法を見つけようとしています。
現在、同じ署名でクエリをコンパイルする必要があります。
public Func<DataContext, int, IQueryable<Item>> Query1
public Func<DataContext, int, IQueryable<Item>> Query2
そして、私のリポジトリクラスで私は何かをしています これをリンクします:
using (DataContext context = new DataContext(ConnectionString)) {
return _queries.Query1(context, id).Union(
_queries.Query2(context, id));
}
しかし、ユニオンはコンパイルされたクエリ内にある必要があると何かが教えてくれます。このようなもの: (このコードはコンパイルされません)
public Func<DataContext, int, IQueryable<Item>> Query1 =
CompiledQuery.Compile((DataContext context, int id) =>
from table1 in context.GetTable<Table1>()
where table1.foreignId = id
select new Item(table1)
union
from table2 in context.GetTable<Table2>()
where table2.foreignId = id
select new Item(table2));
これを達成する方法はありますか?