如何使用多个条件+OR进行linq连接

本文关键字:进行 linq 连接 +OR 条件 何使用 | 更新日期: 2023-09-27 17:59:30

我想知道如何使用多个条件和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()

ORs部分正在爆炸。

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匹配,除非T2.Col2="XYZ"然后仅在Col1 上加入

如何使用多个条件+OR进行linq连接

尝试将"join"移到ANSI 82:的"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")