簡體   English   中英

C# 數據表按計數和不同分組

[英]C# datatable Group by count and distinct

我有一個數據表,看起來像圖片中的那個。

在此處輸入圖片說明

使用下面的代碼,我試圖計算每個項目中每個客戶端 ID 有多少個單元。 我的問題是我似乎無法排除重復的單位。

var projectsGroup = dt.AsEnumerable().GroupBy(g => g.Field<string>("Project"));
foreach (var projectGroup in projectsGroup)
{
    var clientGroups = dt.AsEnumerable().GroupBy(g => g.Field<string>("ClientId"));
    foreach (var clientGroup in clientGroups)
    {
        var test = dt.AsEnumerable()
            .Where(r => r.Field<string>("ClientId") == clientGroup.Key && r.Field<string>("Project") == projectGroup.Key)
            .Select(r => r.Field<string>("Project"));

        //   Console.WriteLine(test.FirstOrDefault() + " " + test.Count());
    }
}

所以我的問題是,如何將這些排除在計數之外?

嘗試這樣的事情:

var projectsGroups = dt.AsEnumerable()
                       .GroupBy(r => r.Field<string>("Project"))
                       .Select(pg => new {
                           Project = pg.Key,
                           Clients = pg.GroupBy(r => r.Field<string>("ClientId"))
                                       .Select(cg => new {
                                           ClientId = cg.Key,
                                           UnitCount = cg.Select(r => r.Field<string>("Unit"))
                                                          .Distinct()
                                                          .Count()
                                       })
                       })
                       .ToList();

foreach (var pg in projectsGroups) {
    foreach (var client in pg.Clients) {
        Console.WriteLine($"In Project {pg.Project}, Client {client.ClientId} has {client.UnitCount} unit{(client.UnitCount == 1 ? "" : "s")}");
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM