LINQ VB.Net

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 products() As Item = 
            {New Item With {.Name = "apple", .Code = 9}, 
             New Item With {.Name = "orange", .Code = 4}, 
             New Item With {.Name = "apple", .Code = 9}, 
             New Item With {.Name = "lemon", .Code = 12}}
        
        ' Exclude duplicates.
        
        Dim noduplicates = products.Distinct()
        
        For Each product In noduplicates
            Console.WriteLine(product.Name & " " & product.Code)
        Next
    End Sub
End Class