区别不删除重复的项目?

Ken*_*hou -1 c# linq c#-4.0

我试过linq删除重复的项目:

   var MyItems = (from b in this.result
               select new Item{ Name = b.Name, ID = b.ID }).Distinct();
Run Code Online (Sandbox Code Playgroud)

我检查了结果,没有删除重复的项目.如何解决这个问题?

Ree*_*sey 5

默认情况下,Distinct()uses EqualityComparer<T>.Default,具有以下规则:

默认的相等比较器Default用于比较实现IEquatable泛型接口的类型的值.要比较自定义数据类型,您需要实现此接口并为该类型提供自己的GetHashCode和Equals方法.

在您的情况下,这意味着Item需要实现IEquatable<Item>.

另外,您也可以使用过载Distinct其中需要IEqualityComparer<T>直接.