linq to SQL with aggregate functions

时间:2011-06-13 19:32:03

标签: linq entity-framework aggregate entities

我花了很多时间尝试将下面的查询转换为linq到实体。

SELECT ItemCode, AVG([Count]) As [Count]
FROM [tblHistory]
GROUP BY ItemCode
ORDER BY [Count] desc

在我的实体框架edmx中,我有tblHistory字段

{ ItemCode(int), Count(int), Date(datetime) }

我能够按一列分组并显示该特定列(在本例中为Count),但在同一上下文中访问ItemCode会给我带来麻烦。

我尝试使用的其中一种方法如下:

 var query = from p in Context.tblHistories
             group p by p.ItemCode into g
             select new tblHistory
                        {
                            ItemCode = g.Key,
                            Count = from c in g select new { c.Count }
                        };

如果有任何了解此情况的人员,我们很乐意为您提供更多信息,请告知我们。

1 个答案:

答案 0 :(得分:3)

tblHistories.GroupBy(p => p.ItemCode)
         .Select(g => new { ItemCode = g.Key, Count = g.Average (c => c.Count)})
         .OrderByDescending(x => x.Count)
         .AsEnumerable()
         .Select(x => new tblHistory{ ItemCode = x.ItemCode, Count = (int)x.Count })