我想从一个表中获取重复值。输入值如下所示,
这里(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());
结果是
2 2 2 2 2 3 2 2 4
请指导我......
答案 0 :(得分:3)
以下代码的返回值是一个具有2个属性的匿名对象:
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() } );
答案 1 :(得分:1)
您的代码存在的问题是,您使用Count
语句返回每个组的Select(x=> x.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