帮助将 SQL 语句转换为 LINQ Lambda(在 group by 和 sum 方面需要帮助)
Posted
技术标签:
【中文标题】帮助将 SQL 语句转换为 LINQ Lambda(在 group by 和 sum 方面需要帮助)【英文标题】:Help convert SQL statement to LINQ Lambda (need help with group by and sum) 【发布时间】:2011-09-08 14:17:11 【问题描述】:这是转换为 LINQ to SQL 的语句(请使用 Lambda)
SELECT [日期],SUM(计数)[计数], SUM(时间) [时间] FROM dbo.TableName 按[日期]分组
这是没有分组和求和的原始数据
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
这些是group by和sum应用后的结果
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;
【问题讨论】:
DataTable 中有数据吗?据我所知,你有,对吧? 【参考方案1】: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)
);
【讨论】:
【参考方案2】:使用 Sum() 扩展方法怎么样:
var query = table.AsEnumerable().Select(s => s.Field<int>("counted")).Sum();
【讨论】:
以上是关于帮助将 SQL 语句转换为 LINQ Lambda(在 group by 和 sum 方面需要帮助)的主要内容,如果未能解决你的问题,请参考以下文章
帮助我使用实体框架从 SQL 转换为 linq 嵌套 lambda 表达式