3

現在、どのように進めてよいか分からない状況にあります。

データベースから取り込まれた 2 つのデータテーブルがあり、これら 2 つのデータテーブルを結合するために使用できる列名のリストもあります。次のような一連の LINQ クエリを作成したいと考えています。

  1. 両方のデータ テーブルの行を表示します (内部結合、相互の更新に使用)。
  2. 1 つのデータテーブルから、もう 1 つのデータテーブルには存在しない行を表示します (1 つのクエリ、挿入に使用される左結合、削除に使用される右結合)。

これで、オブジェクトまたはデータテーブルに対する通常の LINQ を使用してこれを行う方法がわかりましたが、この場合、動的に結合する列を適用する必要があり、複数存在する可能性があります。次の部分的なコード例を見てください。

table1.AsEnumerable()
.Join(table2.AsEnumerable(),
    dr1 => dr1.Field<string>("ID"),
    dr2 => dr2.Field<string>("ID"),
    (dr1, dr2) => new
    {
        FieldID = dr1.Field<string>("ID"),
        CdGroup = dr2.Field<string>("Name")
    })

問題は、フィールド タイプがわからないため.Field<string>、ステートメントの一部を適用できないことです。また、それらが複数の結合列である場合は、複数の結合ステートメントが必要になります。

私は動的LINQについて読んだことがありますが、それは非常に有望に思えますが、私がしようとしているような動的LINQ結合に関する情報を見つけることができませんでした. ネストされたループまたはデータテーブルのメソッドを使用しておそらく同じ結果が得られることはわかってい.Select()ますが、必要ないくつかのより厳しいクエリに LINQ を適用しようとしています。

これを達成する方法の指針や例はありますか、それとも非LINQアプローチの使用に戻す必要がありますか?

どうもありがとう。

4

1 に答える 1

0

Entity Frameworkを使用している場合は、Microsoft Dynamics CRMをダウンロードして、この質問に回答したパターンを使用できます。不明な数の条件を動的に処理できるようにQueryExpressionを構造化する方法はありますか。

動的クエリをモデル化できるQueryExpressionと呼ばれる構造があります。このMSDNの記事を参照してくださいhttp://msdn.microsoft.com/en-us/library/microsoft.xrm.sdk.query.queryexpression.aspx

于 2012-10-02T06:08:55.017 に答える