-1

以下のクエリをLinqメソッドバージョンに変換する方法を教えてください。

 myResult =
    from table1 in db.TABLE1
    join table2 in db.TABLE2 on table1.TABLE2_ID equals table2.ID
    join table3 in db.TABLE3 on table1.TABLE3_ID equals table3.ID
    where table1.ACTIF == true
    select new MyClass
    {
         T1MyField1 = table1.MyField1,
         T1MyField2 = table1.MyField2,
         T2MyField1 = table2.MyField1,
         T2MyField2 = table2.MyField2,
         T3MyField1 = table3.MyField1,
         T3MyField2 = table3.MyField2,
         T3MyField3 = table3.MyField3
    }

更新1: 述語を作成しました:

 Expression<Func<IMyClass, bool>> predicate;

ランバダを適用したいのですが、ラムダ構文では不可能だと思います。

4

3 に答える 3

1

ILSpyを使用して、クエリ構文を使用して現在のアセンブリをメソッド構文クエリに逆コンパイルできます。オプションに移動し、「クエリ式の逆コンパイル」の選択を解除します。

于 2012-08-20T11:46:11.313 に答える
1
var myResult = db.TABLE1
    .Join(db.TABLE2, t1 => t1.TABLE2_ID, t2 => t2.ID, (t1, t2) => new { Table1 = t1, Table2 = t2 })
    .Join(db.TABLE3, j => j.Table1.TABLE3_ID, t3 => t3.ID, (j, t3) => new { Table1 = j.Table1, Table3 = j.Table2, Table3 = t3 })
    .Where(row => row.Table1.ACTIF)
    .Select(row => new MyClass {
        T1MyField1 = row.Table1.MyField1,
        T1MyField2 = row.Table1.MyField2,
        T2MyField1 = row.Table2.MyField1,
        ...

    });
于 2012-08-20T11:53:37.690 に答える
0

編集について:いつでも好きなように2つのスタイルを組み合わせることができます:

myResult = (from ... select new MyClass { ... }).Where(predicate);
于 2012-08-20T11:55:03.413 に答える