2

複数の条件と OR を使用して linq 結合を行う方法を知りたいです。

例:

var i = (from d in context.Table1
         join b in context.Table2
         on new {r1 = d.col1, r2 = d.col2}
         equals new {r1 = b.col1, r2 = b.col2}
         || b.col3.ToLower() equals "xyz"
         into bd
         from k in bd.DefaultIfEmpty()

ORの部分が爆発しています。

SQL の例:

SELECT * FROM Table1 T1
LEFT JOIN Table2 T2 ON (T1.Col1 = T2.Col1 AND T1.Col2 =T2.Col2) 
                     OR (T1.Col1 = T2.Col1 AND T2.Col2 = 'XYZ')

説明:

T1.Col1 は T2.COl1 と一致する必要があります - 必須の結合

それで

T1.Col2 は、T2.COl2 = "XYZ" でない限り T2.Col2 と一致する必要があり、Col1 でのみ結合します。

4

1 に答える 1

1

「join」をANSI82の「Where」句に移動してみてください。

var i = (from d in context.Table1
         from b in context.Table2
         where (b == null)
               || (d.col1 = b.col1 && d.col2 == b.col2 ) 
               || (b.col3.ToLower() == "xyz")
于 2013-02-14T21:40:39.047 に答える