如何使用linq中的group by子句计算表列的计数

Ram*_*Ram 2 linq asp.net

我是linq的新手.在c#中,我按如下方式进行,以获得一列的计数.

SELECT   DispatcherName,
         ActivityType,
         CONVERT(BIGINT,COUNT(ActivityType)) AS Total
FROM     ACTIVITYLOG
GROUP BY DispatcherName,
         ActivityType
ORDER BY Total DESC
Run Code Online (Sandbox Code Playgroud)

任何人都可以告诉我,我如何使用LINQ实现同样的目标.

更新:

我按照以下方式做了并得到了结果.但是我无法将结果转换为数据表.这就是我做的.这里的dt是datatabe,有两列Dispatchername和ActivityType.

 var query1 = from p in dt.AsEnumerable()
                             group p by new
                             {
                                 DispatcherName = p.Field<string>("Dispatchername"),
                                 Activity = p.Field<string>("ActivityType"),
                             }
                                 into pgroup
                                 let count = pgroup.Count()
                                 orderby count
                                 select new
                                 {
                                     Count = count,
                                     DispatcherName = pgroup.Key.DispatcherName,
                                     Activity = pgroup.Key.Activity
                                 };
Run Code Online (Sandbox Code Playgroud)

请尽快帮助我.

Adr*_*ode 5

from c in ACTIVITYLOG
group c by new {c.DispatcherName, c.ActivityType} into g
orderby g.Count() descending
select new { g.Key.DispatcherName, g.Key.ActivityType, Total = g.Count() }
Run Code Online (Sandbox Code Playgroud)