查找并删除对象中的不同项和重复项

10 浏览
0 Comments

查找并删除对象中的不同项和重复项

我对LINQ非常陌生。我遇到了一个需要从对象中找到不同值并删除其他值的场景。请帮忙。

我尝试了以下方法:

var xyz = referal.GroupBy(i => i.Select(x => x.identifier).Distinct().Select(g=>g));

但它没有返回不同的值。提前感谢您的帮助。

示例对象:

{

"referral_type": [

{

"type": "MOBILE",

"invitee": [

{

"identifier": "12345678",

"name": "Test2",

"invited_on": "2020-01-29 12:25:46.0",

"till": {

"code": "",

"name": ""

}

},

{

"identifier": "98765432",

"name": "Test1",

"invited_on": "2020-01-29 13:37:36.0",

"till": {

"code": "",

"name": ""

}

},

{

"identifier": "12345678",

"name": "Harry Test",

"invited_on": "2020-01-29 13:55:32.0",

"till": {

"code": "",

"name": ""

}

},

{

"identifier": "98765432",

"name": "Harry Test",

"invited_on": "2020-01-29 13:55:32.0",

"till": {

"code": "",

"name": ""

}

}

]

}

]

所以我想检查不同的标识符,并取第一个,不考虑其他值,类似于这样:

{

"referral_type": [

{

"type": "MOBILE",

"invitee": [

{

"identifier": "12345678",

"name": "Test2",

"invited_on": "2020-01-29 12:25:46.0",

"till": {

"code": "",

"name": ""

}

},

{

"identifier": "98765432",

"name": "Test1",

"invited_on": "2020-01-29 13:37:36.0",

"till": {

"code": "",

"name": ""

}

}

]

}

]

}

0
0 Comments

问题的原因:需要实现接口IEquatable的invitee类,因为Distinct方法使用该接口来比较对象。这种比较方式可能是基于内存引用的。

解决方法:在invitee类中实现IEquatable接口,以便可以进行对象比较。

0