【问题标题】:Converting SQL inner join, group by and order to LINQ将 SQL 内连接、分组依据和顺序转换为 LINQ
【发布时间】:2017-05-26 10:02:09
【问题描述】:

我创建了如下 SQL 查询:

SELECT s.FullName, s.[Id], COUNT(t.[User]) AS Records
FROM dbo.AspNetUsers s INNER JOIN dbo.PBBuilds t
ON s.Id = t.[User]
GROUP BY t.[User], s.[FullName], s.[Id]
ORDER BY COUNT(t.[User]) DESC

我正在尝试将其转换为 LINQ 查询,这就是我所取得的成果:

Dim results = From H In context.Users
           Join C In context.PBBuilds On H.Id Equals C.User
           Group By C.User Into

谁能给点建议。

【问题讨论】:

    标签: sql-server vb.net linq


    【解决方案1】:

    试试这个查询 -- (尽管做出相应的改变)

    var results = From U In context.AspNetUsers
           Join P In context.PBBuilds On U.Id Equals P.User
           Group By new { P.User, U.FullName } Into g
           Orderby COUNT(P.User) Descending
           select new {
             FullName = U.FullName,
             ID = U.Id,
             Records = COUNT(P.User)
           };
    

    【讨论】:

    • 错误的 linq 查询
    • 如何按P和U分组
    • 选择值不能使用 g 对象
    【解决方案2】:

    试试代码

    var results = From U In context.AspNetUsers
       Join P In context.PBBuilds On U.Id Equals P.User
       Group new {U,P} By new { P.User, U.FullName } Into g       
       select new {
         FullName = g.FirstOrDefault().U.FullName,
         ID = g.FirstOrDefault().U.Id,
         Records = g.Count()
       }).OrderByDescending(c=>c.Records).ToList();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-06-01
      • 1970-01-01
      • 2012-03-25
      • 1970-01-01
      • 2013-10-07
      • 2021-05-02
      • 2019-02-18
      • 2010-10-16
      相关资源
      最近更新 更多