在此处使用c#Sytem.Linq
。
我想在表中找到重复项。当表中已经存在三列的组合时,将定义一个重复项。
例如,下面是重复记录:
Row Id Name Value Status
1 1 Peter 1 New
2 1 Peter 1 Old
3 1 Peter 1 Pending
4 2 Peter 1 New
5 2 Sandy 2 Old
在上表中,第1、2和3行是重复的。所以我写了下面的查询来查找所有重复项:
//Below response holds all data from my db
var result = response
.GroupBy(o => new { o.Id, o.Name, o.Value })
.Where(g => g.Count() > 1)
.Select(y => y.Key)
.ToList();
我上面的查询显示了数据中的所有结果,而不是重复的。我在这里做错了什么?
我希望查询仅根据上述条件返回重复项。
答案 0 :(得分:1)
我在https://facebook.github.io/graphql/June2018/#sec-Errors尝试了您的代码,它工作正常。您的问题可能在其他地方。这是我尝试过的方法:
using System;
using System.Linq;
public class Program
{
public static void Main()
{
var response = new [] {
new { Id = 1, Name = "Peter", Value = 1, Status = "New" },
new { Id = 1, Name = "Peter", Value = 1, Status = "Old" },
new { Id = 1, Name = "Peter", Value = 1, Status = "Pending" },
new { Id = 2, Name = "Peter", Value = 1, Status = "New" },
new { Id = 2, Name = "Sandy", Value = 2, Status = "Old" }
};
var result = response
.GroupBy(o => new { o.Id, o.Name, o.Value })
.Where(g => g.Count() > 1)
.Select(y => y.Key)
.ToList();
Console.WriteLine(string.Join(Environment.NewLine, result));
}
}
输出:
{ Id = 1, Name = Peter, Value = 1 }