GROUP JOINの複数結合について(Linq To Entities )
なんかうまく行ったので残しておきます。
絶対にSQLで書いたほうが見やすくメンテもし易いと思いますが。。
さて、話を戻して複数条件の結合方法です!
下記のようなテーブルから、データを結合させて出力するパターンです。
AAA、BBB、CCCの3つのテーブルをもとにDDDのテーブルを作成します。
Dim con As New DATABASS Dim JoinList = con.CCC.GroupJoin(con.AAA, Function(ccc) New With {Kye .ID = Ctype(ccc.社員ID,Integer), Kye .コード = Ctype(ccc.部署コード,Integer)}, Function(aaa) New With {Kye .ID = Ctype(aaa.社員ID,Integer), Kye .コード = Ctype(aaa.部署コード,Integer)}, Function(ccc, aaa) New With {ccc, aaa}) _ .SelectMany(Function(Sccc) Sccc.aaa.DefaultIfEmpty(), Function(ccc, aaa) New With {ccc.ccc, aaa}) _ .GroupJoin(con.BBB, Function(ccc) ccc.ccc.部署コード, aaa.部署コード, Function(ccc, bbb) New With {ccc, bbb}) _ .SelectMany(Function(Sccc) Sccc.bbb.DefaultIfEmpty(), _ Function(ccc, bbb) New With {Key .SEQ = ccc.ccc.SEQ, Key .名前 = ccc.aaa.名前, Key .部署名 = bbb.部署名, Key .請求書発行NO1 = ccc.ccc.請求書発行NO}).ToArray
※ポイントは「GROUPJOIN」のキーの型を比較元と比較先で合わせる。
※integer?とintegerは別として扱われるため注意。
そんなのも知らないのかと思われますが、「?」がつくとNullが入っててもOKとするような意味合いになります。
出力は変わらないので前の記事を参照して下さい。
mmdaics.hateblo.jp
以上。