none
C#のLINQでSQLでいうところの「ON a.A=b.A AND a.B=b.B」をどのように書きますか? RRS feed

  • 質問

  • var v=from a in Table3変数 join b in Table4変数 on a.A equals b.A AND a.B equals b.B select new {a_A= a.A,a_B=a.B };

    上記は以下のコンパイルエラーがでます。
    エラー    1    クエリ本体の後には select 句または group 句が必要です    I:\アプリケーション\113VS2008に適用うまくいっちゃった?\サーバ\LINQ\LINQ\LINQ.cs    424    75    LINQ

    ANDの部分をC#のLINQではどう書けばよいのでしょうか?&&でも同じコンパイルエラーがおきます。

    どのように書けば実現できるのでしょうか?

    2007年12月31日 7:50

回答

  • 試してみました。まさに正解でした!
                var v=from a in Table3変数 join b in Table4変数 on new { a.A, a.B } equals new { b.A, b.B } select new {a_A= a.A,a_B=a.B };
    大変ありがとうございました。他にも迷っている人がいたと思います。
    2008年1月1日 9:55

すべての返信

  • # あてずっぽで。

    LINQとSQLとでは、演算子の優先順位が違うんじゃないでしょうか?

    適当に括弧で括ってみては?

    2007年12月31日 11:28
  • var v=from a in Table3変数 join b in Table4変数 on (a.A equals b.A && a.B equals b.B) select new {a_A= a.A,a_B=a.B };
    と括弧入れても
    エラー    1    ) が必要です。    C:\Users\kazuhiro\Documents\Visual Studio 2008\Projects\LINQテスト\LINQテスト\LINQ.cs    325    56    LINQテスト
    エラー    2    クエリ本体の後には select 句または group 句が必要です    C:\Users\kazuhiro\Documents\Visual Studio 2008\Projects\LINQテスト\LINQテスト\LINQ.cs    325    74    LINQテスト

    という同じエラーが起きます。
    2008年1月1日 3:56
  • 確か

     

     on new { a.A, a.B } equals new { b.A, b.B }

     

    だったと思う。

     

    # group ... by ... でも同様に new で匿名型としてひとつにまとめてという感じ。

    2008年1月1日 7:44
  • 試してみました。まさに正解でした!
                var v=from a in Table3変数 join b in Table4変数 on new { a.A, a.B } equals new { b.A, b.B } select new {a_A= a.A,a_B=a.B };
    大変ありがとうございました。他にも迷っている人がいたと思います。
    2008年1月1日 9:55
  • LINQ の join句 は,等結合専用なので,

    それ以外は,

    方法 : カスタム結合操作を実行する (C# プログラミング ガイド)

    あたりに載ってます。

    2008年1月2日 18:34