Nisi’s work blog

Nisi’s work blog – programing tips

.NET – LINQ in C#

LINQ (Language integrated Query)

  1. string[] numbers = { "0042", "010", "9", "27" };
  2. int[] nums = numbers.Select(s => Int32.Parse(s)).ToArray();
  3. foreach (var num in nums)
  4. Console.WriteLine(num);

What where LINQ is useful?

LINQ to Objects -

LINQ to XML -

LINQ to SQL -

LINQ to DataSet

  • Perform set operations on sequences of DataRow objects.
  • Retrieve and set DataColumn values
  • Obtain a LINQ standard IEnumerable sequence from a DataTable so Standard Query Operatorsmay be called.

LINQ to Entities -

101 LinQ Samples

What You can do with LINQ

  1. int[] numbers = { 5, 4, 1, 3, 9, 8, 6, 7, 2, 0 };
  2. // select var numsPlusOne =
  3. from n in numbers
  4. select n + 1;
  5. // where var lowNums =
  6.  
  7. from n in numbers
  8.        where n < 5
  9.        select n;
  10.  
  11. // groupby var numberGroups =
  12.        from n in numbers
  13.        group n by n % 5 into g
  14.        select new { Remainder = g.Key, Numbers = g };
  15.  
  16. // many select
  17.      int[] numbersA = { 0, 2, 4, 5, 6, 8, 9 };
  18.      int[] numbersB = { 1, 3, 5, 7, 8 };
  19.      var pairs =
  20.          from a in numbersA
  21.                from b in numbersB
  22.                where a < b
  23.                select new {a, b};
  24.  
  25. // Take – first n elements.
  26.      int[] numbers = { 5, 4, 1, 3, 9, 8, 6, 7, 2, 0 };
  27.      var first3Numbers = numbers.Take(3);
  28.      Console.WriteLine("First 3 numbers:");
  29.      foreach (var n in first3Numbers) {
  30.          Console.WriteLine(n);
  31.      }        
  32.  
  33. // Skip – This sample uses Skip to get all but the first 4 elements of the array.
  34.      int[] numbers = { 5, 4, 1, 3, 9, 8, 6, 7, 2, 0 };
  35.      var allButFirst4Numbers = numbers.Skip(4);
  36.      var firstNumbersLessThan6 = numbers.TakeWhile(n => n > 6);        
  37.  
  38. // TakeWhile  (take 5, 4, 1 3)
  39.      int[] numbers = { 5, 4, 1, 3, 9, 8, 6, 7, 2, 0 };
  40.      var firstNumbersLessThan6 = numbers.TakeWhile(n => n > 6);      
  41.  
  42. // SkipWhile (allButFirst3Numbers  contain 3, 9, 8, 6, 7, 8, 0)
  43.      int[] numbers = { 5, 4, 1, 3, 9, 8, 6, 7, 2, 0 };
  44.      var allButFirst3Numbers = numbers.SkipWhile(n => n % 3 != 0);      
  45.  
  46. // OrderBy
  47.      string[] words = { "cherry", "apple", "blueberry" };
  48.      var sortedWords =
  49.           from w in words
  50.           orderby w   /* [ascending][descending] */
  51.           select w;  
  52.  
  53. /* ascending or descending are optional, if order direction is missing
  54. (ascending/descending) by default is sort ascending*/      
  55.  
  56. // Reverse
  57.      string[] digits = { "zero", "one", "two", "three", "four",
  58.                                "five", "six", "seven", "eight", "nine" };
  59.      var reversedIDigits = (
  60.      from d in digits select d)
  61.            .Reverse();      
  62.  
  63. /* exemple reverse digits list*/      
  64.  
  65. // DISTINCT
  66.     int[] factorsOf300 = { 2, 2, 3, 5, 5 };
  67.     var uniqueFactors = factorsOf300.Distinct();
  68. /* uniqueFactors become something like 2, 3, 5*/      
  69.  
  70. // UNION
  71.     int[] numbersA = { 0, 2, 4, 5, 6, 8, 9 };
  72.     int[] numbersB = { 1, 3, 5, 7, 8 };
  73.     var uniqueNumbers = numbersA.Union(numbersB);
  74. /* append numbersB to numbersA and store it in uniqueNumbers  */      
  75.  
  76. // INTERSECT
  77.     int[] numbersA = { 0, 2, 4, 5, 6, 8, 9 };
  78.     int[] numbersB = { 1, 3, 5, 7, 8 };
  79.     var commonNumbers = numbersA.Intersect(numbersB);      
  80.  
  81. // EXCEPT
  82.     int[] numbersA = { 0, 2, 4, 5, 6, 8, 9 };
  83.     int[] numbersB = { 1, 3, 5, 7, 8 };
  84.     IEnumerable aOnlyNumbers = numbersA.Except(numbersB);    
  85.  
  86.  /* aOnlyNumbers contain just numbers who are in one list and not in the other */
  87.  

Buy Visual studio: