Skip to main content

DistinctRows

This sample uses DistinctRows to remove duplicate DataRows in a DataTable of factors of 300.

Public Sub DataSetLinq46()
    Dim factorsOf300 = TestDS.Tables("FactorsOf300")

    Dim uniqueFactors = factorsOf300.AsEnumerable().Distinct()

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


Result:
Prime factors of 300:
2
2
3
5
5


Distinct

This sample uses Distinct to find the unique Category names.

Public Sub DataSetLinq47()
    Dim products = TestDS.Tables("Products").AsEnumerable()

    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


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


UnionRows

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

Public Sub DataSetLinq48()
    Dim numbersA = TestDS.Tables("NumbersA").AsEnumerable()
    Dim numbersB = TestDS.Tables("NumbersB").AsEnumerable()

    Dim uniqueNumbers = numbersA.Union(numbersB)

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


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


Union

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

Public Sub DataSetLinq49()

    Dim products = TestDS.Tables("Products").AsEnumerable()
    Dim customers = TestDS.Tables("Customers").AsEnumerable()

    Dim productFirstChars = From p In products _
        Select p.Field(Of String)("ProductName")(0)

    Dim customerFirstChars = From c In customers _
        Select c.Field(Of String)("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


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


IntersectRows

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

Public Sub DataSetLinq50()
    Dim numbersA = TestDS.Tables("NumbersA").AsEnumerable()
    Dim numbersB = TestDS.Tables("NumbersB").AsEnumerable()

    Dim commonNumbers = numbersA.Intersect(numbersB, DataRowComparer.Default)

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


Result:
Common numbers shared by both DataTables:
5
8


Intersect

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

Public Sub DataSetLinq51()

    Dim products = TestDS.Tables("Products").AsEnumerable()
    Dim customers = TestDS.Tables("Customers").AsEnumerable()

    Dim productFirstChars = From p In products _
        Select p.Field(Of String)("ProductName")(0)

    Dim customerFirstChars = From c In customers _
        Select c.Field(Of String)("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


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


ExceptRows

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

Public Sub DataSetLinq52()
    Dim numbersA = TestDS.Tables("NumbersA").AsEnumerable()
    Dim numbersB = TestDS.Tables("NumbersB").AsEnumerable()

    Dim aOnlyNumbers = numbersA.Except(numbersB)

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


Result:
Numbers in first DataTable but not second DataTable:
0
2
4
5
6
8
9


Except

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 DataSetLinq53()

    Dim products = TestDS.Tables("Products").AsEnumerable()
    Dim customers = TestDS.Tables("Customers").AsEnumerable()

    Dim productFirstChars = From p In products _
        Select p.Field(Of String)("ProductName")(0)
    Dim customerFirstChars = From c In customers _
        Select c.Field(Of String)("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


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