Using C# LINQ - A Practical Overview
Open Source Your Knowledge, Become a Contributor
Technology knowledge has to be shared and made accessible for free. Join the movement.
Using C# LINQ - Review
Congratulations on completing the Using C# LINQ course!
Here is a quick review of what you have learned:
Lambda expressions
Lambda expressions are defined using the lambda operator, =>, and allow you to define an anonymous method that can be stored and passed around in a variable. Here is an example of a lambda expression:
Func<int, int> multiplyByFive = num => num * 5;
// Returns 35
int result = multiplyByFive(7);
Many LINQ methods take a method reference (called a delegate) as a parameter, and lambda expressions are a convenient way of defining these delegates.
IEnumerable<T>
LINQ methods are extensions to the IEnumerable<T> interface, which is an abstraction for a sequence of values of data type T. Any LINQ method can be called on anything that implements IEnumerable<T>, including C# arrays and collections.
Any IEnumerable<T> can be converted into an array or a list (which may be more convenient to work with) by calling the ToArray() or ToList() LINQ methods.
MSDN documentation
Every LINQ method is documented on MSDN at the following address:
https://msdn.microsoft.com/en-us/library/system.linq.enumerable_methods%28v=vs.110%29.aspx
Query and method syntax
There are two different ways to express a LINQ statement in C#: query syntax and method syntax. Query syntax looks similar to SQL, and may be more human-readable, but not all LINQ methods are supported by query syntax. Method syntax looks more like standard C# code, and supports the full set of LINQ methods. Query syntax is converted into method syntax by the compiler.
LINQ Methods
We discussed 27 different LINQ methods, arranged into five categories:
- Methods to extract a single element from a sequence:
First(),Last(),Single(),FirstOrDefault(),LastOrDefault(), andSingleOrDefault() - Methods to extract multiple elements from a sequence:
Skip(),Take(),SkipWhile(),TakeWhile(),Distinct(),Intersect(), andWhere() - Methods to change the order of the elements in a sequence:
Reverse(),OrderBy()andThenBy() - Methods to calculate a single value based on a sequence:
Count(),Sum(),Min(),Max(),Any(),All(),SequenceEqual(), andAggregate() - Methods to calculate a new sequence based on a source sequence:
Cast<U>(),Select(), andSelectMany()