Я пытаюсь использовать метод «Кроме» в наборе результатов LINQ, используя пользовательскую реализацию, если IEqualityComparer исключает определенные результаты на основе значения одного поля из набора результатов.
Итак, в упрощенном виде я ...
'' 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 '"
Может кто-нибудь пролить свет на то, почему это может быть, пожалуйста.