【发布时间】:2014-03-13 14:30:04
【问题描述】:
我有这个类DNS_Log,它有四个属性。我创建了这些对象的列表,我试图过滤这些对象,但仅针对不同的事件。 (在填充列表时,有很多重复)
这是正在填充的列表:
dnsLogs.Add( new DNS_Log { Destination = destination,
Source_IP = sourceIp,
Domain_Controller = domainController,
DateTime = datetime });
这是我尝试仅过滤掉不同的尝试:
dnsLogs = dnsLogs.Distinct().ToList();
为什么这不起作用?我需要在不同的参数中使用一些 linq 表达式吗?我想比较对象作为一个整体的属性。有没有更简单的方法?
附:我已经尝试过制作一个似乎可以正常工作的自定义 IEqualityComparer<DNS_Log>,但我不知道如何在这种情况下实现它。
【问题讨论】:
-
您将问题标记为 linq to sql,但看起来您正在手动创建对象列表。那么,是linq to sql,还是linq to objects?
-
你说它不起作用是什么意思?它的实际作用是什么,与您的预期有何不同?
-
你们是如何实现
IEqualityComparer<DNS_Log>的?也许GetHashCode的逻辑被破坏了。 -
Jim - 尝试过滤后返回相同数量的结果。
-
D Stanley - 哈希逻辑很好,我在 Distinct 参数中错误地实现了该类。