对linq查询结果进行去重处理
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了对linq查询结果进行去重处理相关的知识,希望对你有一定的参考价值。
将数据全部查询出的语句如下
var query=from e in dc.a
order by e.b
select e;
pst=query.ToList();
现在我想做的是在查询时将数据表里面将字段x与y都相同的记录去重,请问下该怎么做?
例如查询结果中存在这样的两条记录:
a=1 b=2 x=11 y=12
a=3 b=4 x=11 y=12
我只需要其中的一条便可(具体哪条无所谓)
public int a, b, x, y;
public class myEqual : IEqualityComparer<d>
public myEqual()
public bool Equals(d x, d y)
if (x == null || y == null) return false;
return x.x == y.x && x.y == y.y;
public int GetHashCode(d obj)
return obj.GetHashCode();
static void Main(string[] args)
List<d> list = new List<d>();
d g = new d();
g.a=1; g.b=2; g.x=11; g.y=12;
list.Add(g);
d j=new d();
j.a = 3; j.b = 4; j.x = 11; j.y = 12;
list.Add(g);
var a = list.Distinct(new myEqual());
Console.ReadKey();
照我这样就行了来自:求助得到的回答本回答被提问者采纳 参考技术A public class d
public int a, b, x, y;
public class myEqual : IEqualityComparer<d>
public myEqual()
public bool Equals(d x, d y)
if (x == null || y == null) return false;
return x.x == y.x && x.y == y.y;
public int GetHashCode(d obj)
return obj.GetHashCode();
static void Main(string[] args)
List<d> list = new List<d>();
d g = new d();
g.a=1; g.b=2; g.x=11; g.y=12;
list.Add(g);
d j=new d();
j.a = 3; j.b = 4; j.x = 11; j.y = 12;
list.Add(g);
var a = list.Distinct(new myEqual());
Console.ReadKey();重写e类的Equals和GetHashCode,然后用Distinct
pst=query.Distinct().ToList();
也可以用for循环一个一个比较 参考技术B 重写e类的Equals和GetHashCode,然后用Distinct
pst=query.Distinct().ToList();
也可以用for循环一个一个比较追问
可以再详细点吗?我对linq还不是很熟悉(我想通过SQL语句来实现,因为程序中已经有了很多的循环了)
以上是关于对linq查询结果进行去重处理的主要内容,如果未能解决你的问题,请参考以下文章