如何在ASP.NET C#中获取重复ID的重复计数(无需SQL)
在ASP.NET C#中为内存数据添加重复ID计数列
针对后台内置的内存数据,无需SQL,可直接用LINQ实现为每条数据添加对应ID的重复计数,步骤如下:
1. 定义数据模型
先定义原始数据模型和带计数的结果模型:
// 原始数据模型 public class Product { public long Id { get; set; } public string Size { get; set; } } // 带计数的结果模型 public class ProductWithCount { public long Id { get; set; } public string Size { get; set; } public int Count { get; set; } }
2. 准备原始数据示例
模拟你的内置数据:
var originalData = new List<Product> { new Product { Id = 1000984958, Size = "XS" }, new Product { Id = 1000972994, Size = "S" }, new Product { Id = 1000972994, Size = "L" } };
3. 两种实现方式
方式一:先统计ID计数再关联
先通过分组统计每个ID的出现次数,再遍历原始数据添加计数:
// 生成ID与对应计数的映射字典 var idCountMap = originalData .GroupBy(p => p.Id) .ToDictionary(group => group.Key, group => group.Count()); // 生成带计数的结果集 var result = originalData .Select(p => new ProductWithCount { Id = p.Id, Size = p.Size, Count = idCountMap[p.Id] }) .ToList();
方式二:一步LINQ完成
利用SelectMany展开分组,直接为组内每条数据添加计数:
var result = originalData .GroupBy(p => p.Id) .SelectMany(group => group.Select(p => new ProductWithCount { Id = p.Id, Size = p.Size, Count = group.Count() })) .ToList();
最终结果
处理后的数据如下:
- ID
1000984958,SizeXS,Count1 - ID
1000972994,SizeS,Count2 - ID
1000972994,SizeL,Count2
内容的提问来源于stack exchange,提问作者Danushka Fernando
相关产品推荐
相关产品推荐

