【发布时间】:2010-11-03 15:28:59
【问题描述】:
如果 IEqualityComparer 根据结果集中单个字段的值排除某些结果,我正在尝试使用自定义实现对 LINQ 结果集使用“Except”方法。
所以,简而言之,我有...
'' Get collection of published sites...
Dim List1 = (From i In db.Sites _
Where (i.StatusID = published) _
Select i.SiteID, _
i.SiteName)
'' Find those with a pending site, but exclue all those whose SiteID is in List1...
Dim insComparer = New insCompare
Dim List2 = (From i In db.Sites _
Where (i.StatusID = pending) _
Select i.SiteID, _
i.SiteName).Except(List1, insComparer)
我的比较器如下...
Public Class insCompare
Implements System.Collections.Generic.IEqualityComparer(Of Object)
Public Function Equals1(ByVal x As Object, ByVal y As Object) As Boolean Implements System.Collections.Generic.IEqualityComparer(Of Object).Equals
Return IIf(x.SiteID = y.SiteID, True, False)
End Function
Public Function GetHashCode1(ByVal x As Object) As Integer Implements System.Collections.Generic.IEqualityComparer(Of Object).GetHashCode
Return x.SiteID.ToString.ToLower.GetHashCode()
End Function
End Class
我在“.Except”行收到一个无效的转换异常,并显示消息“无法将'...insCompare'类型的对象转换为'System.Collections.Generic.IEqualityComparer'”
谁能解释一下为什么会这样。
【问题讨论】:
-
是的,这就是我开始的地方,但我遇到了同样的错误。我假设因为它说它不能按类转换为“System.Collections.Generic.IEqualityComparer”这就是它想要的?
标签: vb.net linq iequalitycomparer except