你如何在 Linq 中写一个带有“OR”的 INNER JOIN
Posted
技术标签:
【中文标题】你如何在 Linq 中写一个带有“OR”的 INNER JOIN【英文标题】:How do you write an INNER JOIN with an "OR" in Linq 【发布时间】:2021-09-16 23:57:36 【问题描述】:我正在尝试编写一个 Linq 查询来生成以下 SQL
SELECT
[t1].[Id], [t2].[value3]
FROM
[Table1] AS [t1]
INNER JOIN
[Table2] AS [t2] ON [t1].[Id] = [t2].[value1]
OR [t1].[Id] = [t2].[value2]
我已经看过很多关于如何进行多重连接的示例,但没有看到如何进行这种“一个或另一个”连接的示例。
【问题讨论】:
也许我的SQL to LINQ Recipe 可以帮助你。 【参考方案1】:var result = from t1 in context.Table1
from t2 in context.Table2
where (t1.Id == t2.value1 || t1.Id == t2.value2)
select new
t1.Id,
t2.value3
;
【讨论】:
【参考方案2】:内连接
var query =
from t1 in context.Table1
from t2 in context.Table2.Where(t2 => t1.Id == t2.value1 || t1.Id == t2.value2)
select new
t1.Id,
t2.value3
;
左连接
var query =
from t1 in context.Table1
from t2 in context.Table2.Where(t2 => t1.Id == t2.value1 || t1.Id == t2.value2)
.DefaultIfEmpty()
select new
t1.Id,
t2.value3
;
【讨论】:
以上是关于你如何在 Linq 中写一个带有“OR”的 INNER JOIN的主要内容,如果未能解决你的问题,请参考以下文章
如何在 linq 查询 c# 中的 WHERE 语句后嵌入动态 OR 条件