C# · 12月 28, 2021

c# – Distinct()不起作用

我有以下 linq表达式: AgentsFilter = new BindableCollection<NameValueGuid>(( from firstEntry in FirstEntries select new NameValueGuid { Name = firstEntry.Agent,Value = firstEntry.AgentId }).Distinct());

但是由于某些原因,AgentsFilter Collection已经被重复了.我的Distinct()有什么问题?

解决方法 不同的将使用NameValueGuid上的Equals方法来查找重复项.如果不覆盖Equals,那么它将检查引用.

您可以添加一个额外的步骤,以避免覆盖Equals,使用匿名类型.匿名类型自动覆盖Equals和GetHashCode来比较每个成员.在匿名类型上进行区分,然后将其投射到您的课堂上将会解决问题.

from firstEntry in FirstEntriesselect new{ Name = firstEntry.Agent,Value = firstEntry.AgentId}).Distinct().Select(x => new NameValueGuid{ Name = x.Name,Value = x.Value});