You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#如何对DataTable按单列GroupBy,保留全部原列并新增计数列

问题原因

你现有代码仅返回两列是因为Select方法中只定义了AccountNumber1和NumCalls两个字段;另外原代码里x.Key.AccountNumber1的写法存在错误:你GroupBy的Key直接是int类型的AccountNumber1值,无需再取属性。

解决方案

假设同一个AccountNumber1对应的其他列(AccountNumber2、AccountListDate、AccountDisposition)取值一致,直接取分组内第一条记录的对应字段即可,修改后代码如下:

table.AsEnumerable()
    .GroupBy(row => row.Field<int>("AccountNumber1"))
    .Select(g => 
    {
        // 取分组内第一条记录作为其他字段的取值来源
        var firstRowInGroup = g.First();
        return new 
        {
            AccountNumber1 = g.Key,
            // 注意Field的泛型类型要和你实际表的列类型匹配,以下是示例类型
            AccountNumber2 = firstRowInGroup.Field<string>("AccountNumber2"),
            AccountListDate = firstRowInGroup.Field<DateTime>("AccountListDate"),
            AccountDisposition = firstRowInGroup.Field<string>("AccountDisposition"),
            NumCalls = g.Count()
        };
    })
    .CopyToDataTable();

注意事项

如果同一个AccountNumber1分组下的其他字段存在不同取值,你需要自行调整取值逻辑,比如要取最新的外呼记录对应的字段,可以将g.First()替换为g.OrderByDescending(row => row.Field<DateTime>("AccountListDate")).First()。

内容的提问来源于stack exchange,提问作者JDSchenck

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 09:57:04