VB.NET和Linq:在另一列中汇总数据表列和按日期分组

rue*_*edi 2 linq vb.net

我有一个typedDataset(ds)和它的数据表(dt).数据表有列Date(ttmmyyy)和Worktime.我想按月汇总工作时间.我已经完成了与工作时间的总结

Dim sum = dt.AsEnumerable().Sum((Function(x) x.Worktime))
Run Code Online (Sandbox Code Playgroud)

我需要按月帮助分组.

Car*_*ras 8

我用你的字段创建了一个表,以下查询工作得很好:

 Dim query = From row In dt
          Group row By VarDate= row.Field(Of DateTime)("Date") Into MonthGroup = Group
          Select New With {
              Key VarDate,
              .Worktime = MonthGroup.Sum(Function(r) r.Field(Of Int32)("Worktime"))
         }
Run Code Online (Sandbox Code Playgroud)

使用变量,VarDate因为Date是为它自己的类保留的.

输出:

Vardate:10/15/2013工作时间:150

Vardate:10/16/2013工作时间:180

编辑:

要获得输出,只需使用:

 For Each obj In query
     Dim datet = obj.VarDate
     Dim WorkH = obj.Worktime
 Next
Run Code Online (Sandbox Code Playgroud)

要避免在使用linq时声明类型option infer on,请在vb.net文档的第一行插入行:(因此可以使用dim datet = obj.Vardate)而不声明类型.它就像c#中的var