4

3 つのデータ テーブルがありますab; とcこれで、 LINQを使用して Join Query Dynamically を記述する必要があります。

顧客によって指定された選択列と条件列にも、実行時に顧客が指定されます。

そのため、クエリを動的に作成する必要があります。以下の例を確認してください。彼らがどのテーブルとどの列を望んでいるのかわからないので

例えば

Select a.c1,a.c2,b.c1,b.c2 From a Left Join b on a.c1=b.c1

Select c.c1,c.c2,a.c1,a.c2 From c Left Join a on c.c3=a.c1

Select a.c1,a.c2,b.c1,b.c2,c.c1,c.c2 From a Left Join b on a.c2=b.c2 Left join c on c.c1=a.c1

さまざまなクエリのセットを作成する必要があるように。これについて私を助けてください。

4

1 に答える 1

3

動的 where 句の場合は、どちらかSystem.Linq.Dynamic( ScottGu のブログ記事nuget ) を使用できます。

var results = (from fruit in fruits 
    join car in cars on fruit.Id equals car.Id
    select new { fruit, car })
    .AsQueryable()
    .Where("fruit.ColA != car.ColA")
    .Where("fruit.ColB == car.ColB");

または、@joe-albahari によって書かれた拡張機能をPredicateBuilder使用して、これを動的に構築します。例えば:

var predicate = 
    PredicateBuilder
        .True<Tuple<Product, Product>>()
        .And(t => t.Item1.ColA != t.Item2.ColA)
        .And(t => t.Item1.ColB == t.Item2.ColB)
        .Compile();    

(from fruit in fruits 
    join car in cars on fruit.Id equals car.Id
    select Tuple.Create(fruit, car))
    .Where(predicate)
    .Dump();

ps: 完全なコードはgisthubで入手できます

于 2012-12-17T18:02:10.773 に答える