c#使用linq对数据表中的多列进行分组我的数据表中有三列:string、datetime和decimal。我想按字符串和小数列分组,对于分组的行,我想对小数值求和。我知道如何做求和部分,但如何将数据表中的两个不同列分组?到目前为止,这是我的代码不起作用:varnewSort=fromrowinobjectTable.AsEnumerable()grouprowbynew{ID=row.Field("resource_name"),time1=row.Field("day_date")}intogrporderbygrp.Keyselectnew{resource_name1=grp.Key.ID,day_date1=grp.Key.time1,Sum=grp.Sum(r=>r.Field("actual_hrs"))};我不认为你给了我们完整的故事。你的查询应该按照你想要的方式工作,除了你不使用匿名类型的命令(你提供的代码不会编译)。我把它放在LINQPad中:varobjectTable=newDataTable();objectTable.Columns.Add("resource_name",typeof(string));objectTable.Columns.Add("day_date",typeof(DateTime));objectTable.Columns.Add("actual_hrs",typeof(decimal));objectTable.Rows.Add(1,DateTime.Today,1);objectTable.Rows.Add(2,DateTime.Today,2);varnewSort=fromrowinobjectTable.AsEnumerable()grouprowbynew{ID=row.Field("resource_name"),time1=row.Field("day_date")}intogrpselectnew{resource_name1=grp.Key.ID,day_date1=grp.Key.time1,Sum=grp.Sum(r=>r.Field("actual_hrs"))};newSort.Dump();……我得到了这些结果:resource_name1|day_date1|总和1|2011年7月1日12:00:00|12|2011年7月1日12:00:00|2使用此代码varnewSort=fromrowinobjectTable.AsEnumerable()grouprowbynew{ID=row.Field("resource_name"),time1=row.Field("day_date")}intogrporderbygrp.Keyselectnew{resource_name1=grp.Key.ID,day_date1=grp.Key.time1,Sum=grp.Sum(r=>Convert.ToDecimal(r.ItemArray[2]))};想使用Vb.net解决方案的朋友,这里举个例子:如果对你有用,需要进一步了解C#学习教程,希望大家多多关注—DimworkTableAsDataTable=NewDataTable("Customers")DimworkColAsDataColumn=workTable.Columns.Add("ID",Type.GetType("System.Int32"))workTable.Columns.Add("Total",Type.GetType("System.Decimal"))workTable.Columns.Add("Compra",Type.GetType("System.Decimal"))DimrowAsDataRow=workTable.NewRow()row("id")=2row("total")=1.5行("compra")=3workTable.Rows。添加(行)行=workTable.NewRow()行(“id”)=1行(“总计”)=1.5行(“compra”)=3.3999999999999999workTable.Rows.Add(行)行=workTable.NewRow()row("id")=1row("total")=1.5row("compra")=5workTable.Rows.Add(row)DimdetallesAsIEnumerable(OfDataRow)=workTable.AsEnumerable()Dimquery=FromdetalleIndetalles.AsEnumerable()_GroupdetalleBygrupoClave=NewWith_{_Key.C2=detalle("id"),_Key.C4=detalle("total")}Intog=Group_SelectNewWith_{_.Col2=g(0).Field(OfInteger)("id"),_.Col3=g(0).Field(OfDecimal)("total"),_.Col4=g.Sum(Function(fact)fact.Field(OfDecimal)("compra"))_}ForEachpInqueryConsole.WriteLine((p.Col2&p.Col3&p.Col4))下一篇本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如有转载请注明出处:
