C# SELECT GROUP by SUM LINQ
本文关键字:SUM LINQ by GROUP SELECT | 更新日期: 2023-09-27 18:16:55
我用LINQ加入了一些表,这是第一次使用它,所以我对它不太熟悉。
下一个查询是:
var query = from catalogoV in catalogo_DT.AsEnumerable()
where catalogoV.Field<String>("Incluye GPS") == "yes"
join vehicle in vehicleData.AsEnumerable()
on catalogoV.Field<String>("Numero Economico") equals vehicle.Field<String>("DisplayName")
join actividad in activityData.AsEnumerable()
on vehicle.Field<Guid>("VehicleId") equals actividad.Field<Guid>("VehicleId")
select new {Displayname = catalogoV.Field<String>("Numero Economico"), ID = vehicle.Field<Guid>("VehicleId"), Increment = actividad.Field<Single>("IncrementalDistance") };
这是我得到的结果的一个例子
{ Displayname = "0DNP-625", ID = {651e5858-bc54-4459-a5de-31144eed3374}, Increment = 0.1 }
{ Displayname = "0DNP-625", ID = {651e5858-bc54-4459-a5de-31144eed3374}, Increment = 0.4 }
{ Displayname = "0DNP-625", ID = {651e5858-bc54-4459-a5de-31144eed3374}, Increment = 4.5 }
{ Displayname = "0003-333", ID = {ecb42206-397f-4cff-bf53-4aac8877491c}, Increment = 0.5 }
{ Displayname = "0003-333", ID = {ecb42206-397f-4cff-bf53-4aac8877491c}, Increment = 5.2 }
但我真的想得到的总和增量回来,而不是所有的行。如:
{ Displayname = "0003-333", ID = {ecb42206-397f-4cff-bf53-4aac8877491c}, Increment = 5.7 }
{ Displayname = "0DNP-625", ID = {ecb42206-397f-4cff-bf53-4aac8877491c}, Increment = 5.0 }
从我所读到的,我需要在我的声明中放置一个组,但我不知道我应该如何将它与我的选择混合,我找不到这样的东西在参考MSDN
对于actividad
字段,您可能需要使用组连接,而不仅仅是连接。方法如下:
var query =
from catalogoV in catalogo_DT.AsEnumerable()
where catalogoV.Field<String>("Incluye GPS") == "yes"
join vehicle in vehicleData.AsEnumerable()
on catalogoV.Field<String>("Numero Economico") equals vehicle.Field<String>("DisplayName")
join actividad in activityData.AsEnumerable()
on vehicle.Field<Guid>("VehicleId") equals actividad.Field<Guid>("VehicleId")
into actividads
let ID = vehicle.Field<Guid>("VehicleId")
orderby ID
select new
{
Displayname = catalogoV.Field<String>("Numero Economico"),
ID,
Increment = actividads.Sum(x => x.Field<Single>("IncrementalDistance"))
};
我已经根据你的评论添加了排序