![]() |
1
145
当涉及到自定义对象时,linq distinct并没有那么聪明。 它所做的只是查看您的列表,并看到它有两个不同的对象(它不关心它们对于成员字段有相同的值)。 一种解决方法是实现如图所示的iequatable接口。 here 是的。 如果您像这样修改author类,它应该可以工作。
|
![]() |
2
65
这个
有一个 overload 这需要一个 IEqualityComparer ,因此可以指定不同的逻辑来确定给定对象是否等于另一个对象。 如果希望author的行为正常,就像一个普通的对象(即只引用相等),但是为了按名称值进行不同的检查相等,请使用 IEQualityComparer公司 是的。如果始终希望根据名称值比较author对象,则 重写gethashcode并等于 ,或 实现iEquatable 是的。
上的两个成员
|
![]() |
3
42
另一个没有实现的解决方案
|
![]() |
4
25
还有一种方法可以从用户定义的数据类型列表中获取不同的值:
当然,它会给出不同的数据集 |
![]() |
5
20
简单的解决方案是添加
对的
实施
这个
|
![]() |
6
10
您已经重写了equals(),但请确保也重写了gethashcode() |
![]() |
7
7
以上答案是错误的!!! 在msdn上声明的distinct返回默认赤道 默认属性检查类型T是否实现System.iequatable接口,如果实现,则返回使用该实现的EqualityComparer。 否则,它返回一个equalityComparer,它使用t提供的object.equals和object.getHashcode的重写 也就是说只要你过了头就没事了。 您的代码不起作用的原因是您选中了firstname==lastname。 看见 https://msdn.microsoft.com/library/bb348436(v=vs.100).aspx 和 https://msdn.microsoft.com/en-us/library/ms224763(v=vs.100).aspx |
![]() |
Emopusta · 从后端到前端的图像路径不工作 2 年前 |
![]() |
Asdrubal Hernandez · Linq查询特定数组索引出错 2 年前 |
![]() |
Niyazi Babayev · 如何在表达式中动态应用表达式? 3 年前 |
|
Dansih · .Net核心自定义身份验证方案 3 年前 |
![]() |
lolorekkk · 面板插入。NET WinForm 3 年前 |