对linq查询结果进行去重处理
将数据全部查询出的语句如下varquery=fromeindc.aorderbye.bselecte;pst=query.ToList();现在我想做的是在查询时将数据表...
将数据全部查询出的语句如下
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
我只需要其中的一条便可(具体哪条无所谓) 展开
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
我只需要其中的一条便可(具体哪条无所谓) 展开
3个回答
展开全部
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();
}
照我这样就行了
{
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();
}
照我这样就行了
来自:求助得到的回答
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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循环一个一个比较
{
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循环一个一个比较
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
重写e类的Equals和GetHashCode,然后用Distinct
pst=query.Distinct().ToList();
也可以用for循环一个一个比较
pst=query.Distinct().ToList();
也可以用for循环一个一个比较
追问
可以再详细点吗?我对linq还不是很熟悉(我想通过SQL语句来实现,因为程序中已经有了很多的循环了)
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
您可能需要的服务
百度律临官方认证律师咨询
平均3分钟响应
|
问题解决率99%
|
24小时在线
立即免费咨询律师
12448人正在获得一对一解答
上海旋风骑士2分钟前提交了问题
成都星星点灯5分钟前提交了问题
北京小白兔4分钟前提交了问题