【问题标题】:What's the LINQ expression of this SQL code?此 SQL 代码的 LINQ 表达式是什么?
【发布时间】:2017-07-09 04:43:44
【问题描述】:

这是我的 SQL 语句:

SELECT p.* 
FROM p
LEFT JOIN q ON p.id = q.id AND p.name = q.name
WHERE q.id IS null

我正在尝试将此代码转换为 LINQ 表达式。

【问题讨论】:

    标签: sql linq


    【解决方案1】:
    var query = from t1 in p
                join q1 in q on t1.name equals q1.name
                where q1.id == null
                select t1;
    

    【讨论】:

    • 我使用了左连接
    【解决方案2】:
       var data = (from a in p
                   from b in q.Where(x => x.id == a.id && x.name == a.name).DefaultIfEmpty()
                   WHERE b.id == null
                   select a).ToList();
    

    此外,您可以尝试Linqer 将您的SQL 查询转换为Linq

    【讨论】:

      【解决方案3】:

      一般来说,假设 C#,通过按 LINQ 理解语法顺序转换短语,将 SQL 转换为 LINQ,如果 SQL 有表别名,则在 LINQ 中将它们用作范围变量。

      您似乎正在尝试进行左反半连接。

      from pr in p
      join qr in q on new { pr.id, p.name } equals { qr.id, qr.name } into qj
      from qr in qj.DefaultIfEmpty()
      where qr == null
      select pr
      

      通常会这样做

      from pr in p
      where !qr.Any(q => q.id == pr.id && q.name.Equals(pr.name))
      select pr
      

      【讨论】:

        猜你喜欢
        • 2017-09-25
        • 1970-01-01
        • 2022-10-15
        • 1970-01-01
        • 2022-01-14
        • 2011-03-02
        • 2011-02-04
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多