代码之家  ›  专栏  ›  技术社区  ›  Filip Ekberg

具有内部select的LINQ HAVING子句

  •  1
  • Filip Ekberg  · 技术社区  · 15 年前

    以下内容将如何转换为 LINQ - EF

    select Name
    from TableA as TableAOuter
    group by TableAOuter.Name, TableAOuter.Id
    having(
        select count(TableAInner.Id)
        from TableA as TableAInner
        where TAbleAInner.Reference=TableAOuter.Id) = 0
    );
    
    1 回复  |  直到 15 年前
        1
  •  2
  •   Jon Skeet    15 年前

    对我来说,这看起来像:

    var query = from row in tableOuter
                group row by new { row.Name, row.Id } into g
                where !tableInner.Any(inner => inner.Reference == g.Key.Id)
                select g.Key.Name;
    

    尽管我很想在分组之前执行筛选,但此时您可以对行名进行分组:

    var query = from row in tableOuter
                where !tableInner.Any(row => inner.Reference == row.Id)
                group row.Name by new { row.Name, row.Id };
    

    认为 这应该是同样的事情,对吧?