101 LINQ Samples: Set Operators

Distinct - 1

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

  1. public void Linq46()
  2. {
  3.     int[] factorsOf300 = { 22355 };
  4.  
  5.     var uniqueFactors = factorsOf300.Distinct();
  6.  
  7.     Console.WriteLine("Prime factors of 300:");
  8.     foreach (var f in uniqueFactors)
  9.     {
  10.         Console.WriteLine(f);
  11.     }
  12. }

Result

Prime factors of 300:
2
3
5

Distinct - 2

This sample uses Distinct to find the unique Category names.

  1. public void Linq47()
  2. {
  3.     List<Product> products = GetProductList();
  4.  
  5.     var categoryNames = (
  6.         from p in products
  7.         select p.Category)
  8.         .Distinct();
  9.  
  10.     Console.WriteLine("Category names:");
  11.     foreach (var n in categoryNames)
  12.     {
  13.         Console.WriteLine(n);
  14.     }
  15. }

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.

  1. public void Linq48()
  2. {
  3.     int[] numbersA = { 0245689 };
  4.     int[] numbersB = { 13578 };
  5.  
  6.     var uniqueNumbers = numbersA.Union(numbersB);
  7.  
  8.     Console.WriteLine("Unique numbers from both arrays:");
  9.     foreach (var n in uniqueNumbers)
  10.     {
  11.         Console.WriteLine(n);
  12.     }
  13. }

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.

  1. public void Linq49()
  2. {
  3.     List<Product> products = GetProductList();
  4.     List<Customer> customers = GetCustomerList();
  5.  
  6.     var productFirstChars =
  7.         from p in products
  8.         select p.ProductName[0];
  9.     var customerFirstChars =
  10.         from c in customers
  11.         select c.CompanyName[0];
  12.  
  13.     var uniqueFirstChars = productFirstChars.Union(customerFirstChars);
  14.  
  15.     Console.WriteLine("Unique first letters from Product names and Customer names:");
  16.     foreach (var ch in uniqueFirstChars)
  17.     {
  18.         Console.WriteLine(ch);
  19.     }
  20. }

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.

  1. public void Linq50()
  2. {
  3.     int[] numbersA = { 0245689 };
  4.     int[] numbersB = { 13578 };
  5.  
  6.     var commonNumbers = numbersA.Intersect(numbersB);
  7.  
  8.     Console.WriteLine("Common numbers shared by both arrays:");
  9.     foreach (var n in commonNumbers)
  10.     {
  11.         Console.WriteLine(n);
  12.     }
  13. }

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.

  1. public void Linq51()
  2. {
  3.     List<Product> products = GetProductList();
  4.     List<Customer> customers = GetCustomerList();
  5.  
  6.     var productFirstChars =
  7.         from p in products
  8.         select p.ProductName[0];
  9.     var customerFirstChars =
  10.         from c in customers
  11.         select c.CompanyName[0];
  12.  
  13.     var commonFirstChars = productFirstChars.Intersect(customerFirstChars);
  14.  
  15.     Console.WriteLine("Common first letters from Product names and Customer names:");
  16.     foreach (var ch in commonFirstChars)
  17.     {
  18.         Console.WriteLine(ch);
  19.     }
  20. }

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.

  1. public void Linq52()
  2. {
  3.     int[] numbersA = { 0245689 };
  4.     int[] numbersB = { 13578 };
  5.  
  6.     IEnumerable<int> aOnlyNumbers = numbersA.Except(numbersB);
  7.  
  8.     Console.WriteLine("Numbers in first array but not second array:");
  9.     foreach (var n in aOnlyNumbers)
  10.     {
  11.         Console.WriteLine(n);
  12.     }
  13. }

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.

  1. public void Linq53()
  2. {
  3.     List<Product> products = GetProductList();
  4.     List<Customer> customers = GetCustomerList();
  5.  
  6.     var productFirstChars =
  7.         from p in products
  8.         select p.ProductName[0];
  9.     var customerFirstChars =
  10.         from c in customers
  11.         select c.CompanyName[0];
  12.  
  13.     var productOnlyFirstChars = productFirstChars.Except(customerFirstChars);
  14.  
  15.     Console.WriteLine("First letters from Product names, but not from Customer names:");
  16.     foreach (var ch in productOnlyFirstChars)
  17.     {
  18.         Console.WriteLine(ch);
  19.     }
  20. }

Result

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

posted @ 2011-03-13 20:12  i'm zjz  阅读(376)  评论(0编辑  收藏  举报