Mega Code Archive

 
Categories / VB.Net / Data Structure
 

Enumerable Except produces the set difference of two sequences by using IEqualityComparer(Of T)

Imports System Imports System.Linq Imports System.Collections.Generic Public Class Item     Public Property Name As String     Public Property Code As Integer End Class Public Class ItemComparer     Implements IEqualityComparer(Of Item)     Public Function Equals1(ByVal x As Item, ByVal y As Item) As Boolean Implements IEqualityComparer(Of Item).Equals         If x Is y Then Return True         If x Is Nothing OrElse y Is Nothing Then Return False         Return (x.Code = y.Code) AndAlso (x.Name = y.Name)     End Function     Public Function GetHashCode1(ByVal product As Item) As Integer Implements IEqualityComparer(Of Item).GetHashCode         If product Is Nothing Then Return 0         Dim hashItemName = If(product.Name Is Nothing, 0, product.Name.GetHashCode())         Dim hashItemCode = product.Code.GetHashCode()         Return hashItemName Xor hashItemCode     End Function End Class Public Class Example     Public Shared Sub Main()                   Dim fruits1() As Item =              {New Item With {.Name = "apple", .Code = 9},               New Item With {.Name = "orange", .Code = 4},               New Item With {.Name = "lemon", .Code = 12}}         Dim fruits2() As Item =              {New Item With {.Name = "apple", .Code = 9}}         ' Get all the elements from the first array         ' except for the elements from the second array.         Dim except = fruits1.Except(fruits2, New ItemComparer())         For Each product In except             Console.WriteLine(product.Name & " " & product.Code)         Next     End Sub End Class