繁体   English   中英

SUM LINQ的C#SELECT GROUP

[英]C# SELECT GROUP by SUM LINQ

我有一些表要与LINQ一起加入,这是第一次使用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 }

从我读过的书中,我需要在声明中放一个gorup,但是我不知道该如何将其与我的选择混合使用,并且我在参考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"))
    };

我已根据您的评论添加了订购。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM