我想从一个表中获取重复值计数。输入值如下,
- 子-xxx-20160721
- 子-xxx-20160721
- SUB-125-20160022
这里(1)和(2)是相同的值。如果Name大于1,则应返回1。结果应该返回计数为(2)。
var numberOfDuplicates = this.UnitOfWork.Repository<Models.SUB>()
.Queryable().GroupBy(x => x.Name)
.Where(x => x.Count() > 1)
.Select(x => x.Count());
结果是
22.2.2.2.3.2.2.4
请指导我做这件事。。
以下代码的返回值是一个具有两个属性的匿名对象:
Value
重复的值Amount
重复的次数
var numberOfDuplicates = this.UnitOfWork.Repository()
.Queryable().GroupBy(x => x.Name)
.Where(x => x.Count() > 1)
.Select(x => new { Value = x.Key, Amount = x.Count() } );
代码的问题是使用Select(x=> x.Count())
语句返回每个组的Count
。
您可以使用匿名类型返回名称(分组的Key
)和计数:
var numberOfDuplicates = this.UnitOfWork.Repository<Models.SUB>()
.Queryable().GroupBy(x => x.Name)
.Where(x => x.Count() > 1)
.Select(x => new { Name = x.Key, Count = x.Count() });
foreach(var dup in numberOfDuplicates)
{
Console.WriteLine($"Name = {dup.Name } ** Counter = {dup.Count}");
}
结果:
Name = 1.SUB -xxx-20160721 ** Count = 2