我有两个相同类别的列表,并且想要生成出现在两个列表中的对象的计数。
Dim repeatingMentions As Integer
repeatingMentions =currentMentions.Where(Function(m) previousMentions.Contains(m)).Count
调试我可以看到两个列表包含具有完全相同属性值的对象,这是否足以满足包含,因为计数返回为 0。
最佳答案
您必须重写 Equals
+ GetHashCode
或提供自定义 IEqualityComparer(Of YourClassName)
才能使用 Contains
。或者你必须使用 Any
:
repeatingMentions = currentMentions.
Count(Function(m) previousMentions.
Any(Function(p) m.PropertyName = p.PropertyName))
或者您可以通过 Enumerable.Join
加入两个列表:
Dim inBoth = From currMent In currentMentions
Join prevMent In previousMentions
On currMent.PropertyName Equals prevMent.PropertyName
repeatingMentions = inBoth.Count()
关于.net - 比较两个列表以获取同时出现在两个列表中的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26234532/