使用LINQ对SQL Server进行分组

本文关键字:Server LINQ SQL 使用 | 更新日期: 2023-09-27 18:16:27

我在我的示例应用程序中使用实体框架。它有两个dbset TICKETSDEPARTMENT,分别对应于TICKETSDEPARTMENT sql server表。

我想写LINQ查询,这将导致下面的sql查询或产生类似的输出。

SELECT   D.NAME as DeptName, T.STATUS as Status, COUNT(1) as Count
FROM     TICKETS T
      , DEPARTMENT D 
WHERE    T.FK_DEPT_ID = D.PK_DEPT_ID
GROUP BY D.NAME , T.STATUS;

使用LINQ对SQL Server进行分组

您应该能够使用以下LINQ-Query来实现您的结果:

var result = from t in conn.TICKETS
             join dept in conn.DEPARTMENT on t.FK_DEPT_ID equals dept.PK_DEPT_ID
             select new { DeptName = dept.NAME, Status = t.STATUS }
             into temp
             group temp by new { temp.DeptName, temp.Status }
             into g
             select new { g.Key.DeptName, g.Key.Status, Count = g.Count()};

您也可以使用这种方法语法。

db.Tickets.Join(db.Department,t=>t.FK_DEPT_ID,d=>d.PK_DEPT_ID,(x,y)=>new{x.STATUS,y.NAME})
          .GroupBy(g=>new {g.STATUS,g.NAME})
          .Select(z=>new {z.Key.Name,z.key.STATUS,z.Count()})