C#Linq过滤器和求和数据表

时间:2019-05-28 12:42:21

标签: c# linq

我有一个数据表(参见图片)

enter image description here

我试图将'1相加。每个客户ID的“事件”列中的“费率”。

我正在使用下面的代码来这样做:

Property 'map' does not exist on type 'number'.

您可能会在图像中注意到,许多“ UnitID”是相同的。例如,我正在尝试应用过滤器。如果任何相同的“ UnitID”具有“事件”为“ Refundering”,我想过滤所有那些“ UnitID's”,而不仅是单行。欢迎提出任何有关如何应用此过滤器的想法。

预先感谢

1 个答案:

答案 0 :(得分:0)

UnitID分组并删除包含“ Refundering”的组,然后取消仅保留“ 1. rate”行的分组,按ClientID分组并计算结果。

var ans = dt.AsEnumerable()
            .GroupBy(r => r.Field<string>("UnitID"))
            .Where(rg => rg.All(r => r.Field<string>("Event") != "Refundering"))
            .SelectMany(rg => rg.Where(r => r.Field<string>("Event") == "1. rate"))
            .GroupBy(r => r.Field<string>("ClientID"))
            .Select(rg => new { ClientID = rg.Key, CountRate = rg.Count() });