【问题标题】:How do you write an INNER JOIN with an "OR" in Linq你如何在 Linq 中写一个带有“OR”的 INNER JOIN
【发布时间】: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]
我已经看过很多关于如何进行多重连接的示例,但没有看到如何进行这种“一个或另一个”连接的示例。
【问题讨论】:
标签:
linq
sql-to-linq-conversion
【解决方案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
};