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
相关产品推荐
相关产品推荐

