.NET – LINQ in C#
March 26th, 2008
LINQ (Language integrated Query)
-
string[] numbers = { "0042", "010", "9", "27" };
-
int[] nums = numbers.Select(s => Int32.Parse(s)).ToArray();
-
foreach (var num in nums)
-
Console.WriteLine(num);
What where LINQ is useful?
LINQ to Objects -
LINQ to XML -
- 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 -
What You can do with LINQ
-
int[] numbers = { 5, 4, 1, 3, 9, 8, 6, 7, 2, 0 };
-
// select var numsPlusOne =
-
from n in numbers
-
select n + 1;
-
// where var lowNums =
-
-
from n in numbers
-
where n < 5
-
select n;
-
-
// groupby var numberGroups =
-
from n in numbers
-
group n by n % 5 into g
-
-
// many select
-
int[] numbersA = { 0, 2, 4, 5, 6, 8, 9 };
-
int[] numbersB = { 1, 3, 5, 7, 8 };
-
var pairs =
-
from a in numbersA
-
from b in numbersB
-
where a < b
-
-
// Take – first n elements.
-
int[] numbers = { 5, 4, 1, 3, 9, 8, 6, 7, 2, 0 };
-
var first3Numbers = numbers.Take(3);
-
Console.WriteLine("First 3 numbers:");
-
foreach (var n in first3Numbers) {
-
Console.WriteLine(n);
-
}
-
-
// Skip – This sample uses Skip to get all but the first 4 elements of the array.
-
int[] numbers = { 5, 4, 1, 3, 9, 8, 6, 7, 2, 0 };
-
var allButFirst4Numbers = numbers.Skip(4);
-
var firstNumbersLessThan6 = numbers.TakeWhile(n => n > 6);
-
-
// TakeWhile (take 5, 4, 1 3)
-
int[] numbers = { 5, 4, 1, 3, 9, 8, 6, 7, 2, 0 };
-
var firstNumbersLessThan6 = numbers.TakeWhile(n => n > 6);
-
-
// SkipWhile (allButFirst3Numbers contain 3, 9, 8, 6, 7, 8, 0)
-
int[] numbers = { 5, 4, 1, 3, 9, 8, 6, 7, 2, 0 };
-
var allButFirst3Numbers = numbers.SkipWhile(n => n % 3 != 0);
-
-
// OrderBy
-
string[] words = { "cherry", "apple", "blueberry" };
-
var sortedWords =
-
from w in words
-
orderby w /* [ascending][descending] */
-
select w;
-
-
/* ascending or descending are optional, if order direction is missing
-
(ascending/descending) by default is sort ascending*/
-
-
// Reverse
-
string[] digits = { "zero", "one", "two", "three", "four",
-
"five", "six", "seven", "eight", "nine" };
-
var reversedIDigits = (
-
from d in digits select d)
-
.Reverse();
-
-
/* exemple reverse digits list*/
-
-
// DISTINCT
-
int[] factorsOf300 = { 2, 2, 3, 5, 5 };
-
var uniqueFactors = factorsOf300.Distinct();
-
/* uniqueFactors become something like 2, 3, 5*/
-
-
// UNION
-
int[] numbersA = { 0, 2, 4, 5, 6, 8, 9 };
-
int[] numbersB = { 1, 3, 5, 7, 8 };
-
var uniqueNumbers = numbersA.Union(numbersB);
-
/* append numbersB to numbersA and store it in uniqueNumbers */
-
-
// INTERSECT
-
int[] numbersA = { 0, 2, 4, 5, 6, 8, 9 };
-
int[] numbersB = { 1, 3, 5, 7, 8 };
-
var commonNumbers = numbersA.Intersect(numbersB);
-
-
// EXCEPT
-
int[] numbersA = { 0, 2, 4, 5, 6, 8, 9 };
-
int[] numbersB = { 1, 3, 5, 7, 8 };
-
IEnumerable aOnlyNumbers = numbersA.Except(numbersB);
-
-
/* aOnlyNumbers contain just numbers who are in one list and not in the other */
-
Buy Visual studio:
