使用LINQ对SQL Server进行分组
本文关键字:Server LINQ SQL 使用 | 更新日期: 2023-09-27 18:16:27
我在我的示例应用程序中使用实体框架。它有两个dbset TICKETS
和DEPARTMENT
,分别对应于TICKETS
和DEPARTMENT
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-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()})