帮助将SQL语句转换为LINQ Lambda(需要group by和sum的帮助)

时间:2011-09-08 14:17:11

标签: c# linq sql-server-2008 .net-4.0

这是转换为LINQ to SQL(Lambda please)

的语句

SELECT [Date],SUM(count)[Counted], SUM(时间)[时间] FROM dbo.TableName GROUP BY [日期]

这是没有group by和sum的原始数据

Date                    Counted Time
2011-09-07 00:00:00.000 34      31
2011-09-07 00:00:00.000 6       3
2011-09-07 00:00:00.000 7       3
2011-09-07 00:00:00.000 6       2
2011-09-07 00:00:00.000 7       2
2011-09-07 00:00:00.000 19      4
2011-09-07 00:00:00.000 13      4
2011-09-07 00:00:00.000 11      4
2011-09-07 00:00:00.000 14      3
2011-09-07 00:00:00.000 0.75    3

这些是分组依据和总和后的结果

Date                    Counted Time
2011-09-07 00:00:00.000 117.75  59

这就是我到目前为止所做的事情,但是当我做这个小组和总结时我很困惑。很显然,我的语法已经过时了。

var q = context.TableName.Where(...)
               .GroupBy(x => new { x.Date})
               .Sum(x => x.Counted, x.Time????)
               .Select(x => x.Date, x.Counted, x.Time;

2 个答案:

答案 0 :(得分:6)

var q = context.TableName
           .GroupBy(x => x.Date)
           .Select(g => new { 
               Date = g.Key,
               Counted = g.Sum(x => x.Counted), 
               Time = g.Sum(x => x.Time)
           });

答案 1 :(得分:0)

使用Sum()扩展方法怎么样:

var query = table.AsEnumerable().Select(s => s.Field<int>("counted")).Sum();