Get the products from the first array that have duplicates in the second array : Intersect « LINQ « VB.Net






Get the products from the first array that have duplicates in the second array

 

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

   
  








Related examples in the same category

1.Using Intersect to create one sequence that contains the common first letter
2.Set Operators Intersect