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

VB.NET使用AsEnumerable处理DataTable去重并统计重复行数量问题

DataTable多列分组统计重复行数实现方案

你需要借助LINQ的分组能力配合AsEnumerable()方法实现需求,完整实现代码如下:

首先确保引入所需命名空间:

using System.Data;
using System.Linq;

核心实现逻辑:

// 1. 构建目标DataTable结构,可按需将dtmulti替换为你需要的dtdistinct命名
DataTable dtmulti = new DataTable();
dtmulti.Columns.Add("Customer", typeof(string));
dtmulti.Columns.Add("Year", typeof(int));
dtmulti.Columns.Add("multi", typeof(int));

// 2. 对原表按Customer、Year两列分组,统计每组行数
var groupResult = dtDealer.AsEnumerable()
    .GroupBy(row => new 
    {
        Customer = row.Field<string>("Customer"),
        Year = row.Field<int>("Year")
    })
    .Select(g => new 
    {
        g.Key.Customer,
        g.Key.Year,
        MultiCount = g.Count()
    });

// 3. 将分组结果写入目标表
foreach (var item in groupResult)
{
    DataRow newRow = dtmulti.NewRow();
    newRow["Customer"] = item.Customer;
    newRow["Year"] = item.Year;
    newRow["multi"] = item.MultiCount;
    dtmulti.Rows.Add(newRow);
}

注意:如果原表Year列的数据类型不是int,或者允许为空,请对应调整Field<T>的泛型参数,比如改为Field<int?>("Year")即可适配可空整数类型。

内容的提问来源于stack exchange,提问作者Mr.BlackBolt

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 20:36:03