【问题标题】: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
        };
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-11-24
      • 2012-06-07
      • 1970-01-01
      • 2014-09-15
      • 2012-02-02
      • 1970-01-01
      • 1970-01-01
      • 2012-04-02
      相关资源
      最近更新 更多