【问题标题】:Help convert SQL statement to LINQ Lambda (need help with group by and sum)帮助将 SQL 语句转换为 LINQ Lambda(在 group by 和 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 中有数据吗?据我所知,你有,对吧?

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


【解决方案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();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-05-18
      • 1970-01-01
      • 2018-11-24
      • 1970-01-01
      • 2014-02-01
      • 1970-01-01
      • 2011-04-02
      相关资源
      最近更新 更多