Skip to main content

Distinct - 1

This sample uses Distinct to remove duplicate elements in a sequence of factors of 300.

Public Sub Linq46()
    Dim factorsOf300() = {2, 2, 3, 5, 5}

    Dim uniqueFactors = From u In factorsOf300 Distinct

    Console.WriteLine("Prime factors of 300:")
    For Each f In uniqueFactors
        Console.WriteLine(f)
    Next
End Sub


Result:
Prime factors of 300:
2
3
5


Distinct - 2

This sample uses Distinct to find the unique Category names.

Public Sub Linq47()
    Dim products = GetProductList()

    Dim categoryNames = From p In products _
        Select p.Category _
        Distinct

    Console.WriteLine("Category names:")
    For Each n In categoryNames
        Console.WriteLine(n)
    Next
End Sub


Public Function GetProductList() As List(Of Product)
    If productList Is Nothing Then
        CreateLists()
    End If

    Return productList
End Function


Result:
Category names:
Beverages
Condiments
Produce
Meat/Poultry
Seafood
Dairy Products
Confections
Grains/Cereals


Union - 1

This sample uses Union to create one sequence that contains the unique values from both arrays.

Public Sub Linq48()
    Dim numbersA() = {0, 2, 4, 5, 6, 8, 9}
    Dim numbersB() = {1, 3, 5, 7, 8}

    Dim uniqueNumbers = numbersA.Union(numbersB)

    Console.WriteLine("Unique numbers from both arrays:")
    For Each n In uniqueNumbers
        Console.WriteLine(n)
    Next
End Sub


Result:
Unique numbers from both arrays:
0
2
4
5
6
8
9
1
3
7


Union - 2

This sample uses Union to create one sequence that contains the unique first letter from both product and customer names.

Public Sub Linq49()
    Dim products = GetProductList()
    Dim customers = GetCustomerList()

    Dim productFirstChars = From p In products _
        Select p.ProductName(0)

    Dim customerFirstChars = From c In customers _
        Select c.CompanyName(0)

    Dim uniqueFirstChars = productFirstChars.Union(customerFirstChars)

    Console.WriteLine("Unique first letters from Product names and Customer names:")
    For Each ch In uniqueFirstChars
        Console.WriteLine(ch)
    Next
End Sub

Public Function GetProductList() As List(Of Product)
    If productList Is Nothing Then
        CreateLists()
    End If

    Return productList
End Function


Result:
Unique first letters from Product names and Customer names:
C
A
G
U
N
M
I
Q
K
T
P
S
R
B
J
Z
V
F
E
W
L
O
D
H


Intersect - 1

This sample uses Intersect to create one sequence that contains the common values shared by both arrays.

Public Sub Linq50()
    Dim numbersA() = {0, 2, 4, 5, 6, 8, 9}
    Dim numbersB() = {1, 3, 5, 7, 8}

    Dim commonNumbers = numbersA.Intersect(numbersB)

    Console.WriteLine("Common numbers shared by both arrays:")
    For Each n In commonNumbers
        Console.WriteLine(n)
    Next
End Sub


Result:
Common numbers shared by both arrays:
5
8


Intersect - 2

This sample uses Intersect to create one sequence that contains the common first letter from both product and customer names.

Public Sub Linq51()
    Dim products = GetProductList()
    Dim customers = GetCustomerList()

    Dim productFirstChars = From p In products _
        Select p.ProductName(0)
    Dim customerFirstChars = From c In customers _
        Select c.CompanyName(0)

    Dim commonFirstChars = productFirstChars.Intersect(customerFirstChars)

    Console.WriteLine("Common first letters from Product names and Customer names:")
    For Each ch In commonFirstChars
        Console.WriteLine(ch)
    Next
End Sub

Public Function GetProductList() As List(Of Product)
    If productList Is Nothing Then
        CreateLists()
    End If

    Return productList
End Function


Result:
Common first letters from Product names and Customer names:
C
A
G
N
M
I
Q
K
T
P
S
R
B
V
F
E
W
L
O


Except - 1

This sample uses Except to create a sequence that contains the values from numbersAthat are not also in numbersB.

Public Sub Linq52()
    Dim numbersA() = {0, 2, 4, 5, 6, 8, 9}
    Dim numbersB() = {1, 3, 5, 7, 8}

    Dim aOnlyNumbers = numbersA.Except(numbersB)

    Console.WriteLine("Numbers in first array but not second array:")
    For Each n In aOnlyNumbers
        Console.WriteLine(n)
    Next
End Sub


Result:
Numbers in first array but not second array:
0
2
4
6
9


Except - 2

This sample uses Except to create one sequence that contains the first letters of product names that are not also first letters of customer names.

Public Sub Linq53()
    Dim products = GetProductList()
    Dim customers = GetCustomerList()

    Dim productFirstChars = From p In products _
        Select p.ProductName(0)
    Dim customerFirstChars = From c In customers _
        Select c.CompanyName(0)

    Dim productOnlyFirstChars = productFirstChars.Except(customerFirstChars)

    Console.WriteLine("First letters from Product names, but not from Customer names:")
    For Each ch In productOnlyFirstChars
        Console.WriteLine(ch)
    Next
End Sub

Public Function GetProductList() As List(Of Product)
    If productList Is Nothing Then
        CreateLists()
    End If

    Return productList
End Function


Result:
First letters from Product names, but not from Customer names:
U
J
Z