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

标签 c# linq

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

最佳答案

尝试将“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")

关于c# - 如何使用多个条件 + OR 进行 linq 连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14884169/

相关文章:

c# - 查找重复单词的值

c# - 通过类字符串属性过滤

c# - 如何实现类似 "Fences"的东西

c# - 如何使用正则表达式从文件名中删除字符串 "[xyz]"?

c# - 为什么 ProgressBar.SetValue 会抛出具有有效值的 ArgumentException?

c# - 在 iOS 中通过 VPS 访问远程数据

c# - 根据子元素对堆栈面板进行排序?

c# - 在输入文本中有多个 % 运算符的 LINQ 中等效的 SQL LIKE 运算符是什么?

c# - 如何将 ListItemCollection (dropdownlist.items) 转换为字典<string,string>?

c# - 如何以编程方式限制我的 C# 应用程序的带宽使用?