我有以下linq表达式:
AgentsFilter = new BindableCollection<NameValueGuid>((
from firstEntry in FirstEntries
select new NameValueGuid {
Name = firstEntry.Agent,
Value = firstEntry.AgentId
}).Distinct()
);
但是由于某种原因,AgentsFilter集合中充满了重复项。我的
Distinct()
有什么问题? 最佳答案
Distinct
将在Equals
上使用NameValueGuid
方法查找重复项。如果您没有覆盖Equals
,那么它将检查引用。
您可以通过使用匿名类型添加一个额外的步骤来避免覆盖等于。匿名类型自动覆盖Equals和GetHashCode以比较每个成员。对匿名类型进行区分,然后将其投影到您的类上即可解决该问题。
from firstEntry in FirstEntries
select new
{
Name = firstEntry.Agent,
Value = firstEntry.AgentId
}).Distinct().Select(x => new NameValueGuid
{
Name = x.Name,
Value = x.Value
});
关于c# - Distinct()不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11884255/