Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What is the "=>" sign in LINQ queries?

Tags:

c#

asp.net

linq

It's amazing how little information there is on this. I found tons of tutorials explaining LINQ, but they don't explain this particular operator:

var Results = UserFavoritesContext.UserFavorites.Select(color => color.FavoriteColor);

"x => x.y"

Can someone please explain how this works? I get the general syntax and am able to use it to make queries, but it's like doing something without knowing what you're doing.

like image 398
user3407764 Avatar asked Apr 10 '15 07:04

user3407764


People also ask

What is => operator in LINQ?

A set of extension methods forming a query pattern is known as LINQ Standard Query Operators. As building blocks of LINQ query expressions, these operators offer a range of query capabilities like filtering, sorting, projection, aggregation, etc.

What are LINQ query expressions?

Language-Integrated Query (LINQ) is the name for a set of technologies based on the integration of query capabilities directly into the C# language. Traditionally, queries against data are expressed as simple strings without type checking at compile time or IntelliSense support.

What is lambda expression in LINQ?

A lambda expression is a convenient way of defining an anonymous (unnamed) function that can be passed around as a variable or as a parameter to a method call. Many LINQ methods take a function (called a delegate) as a parameter.

What are the two types of LINQ queries?

There are two basic ways to write a LINQ query to IEnumerable collection or IQueryable data sources.


1 Answers

Suppose you have a list of people, and you want to iterate over them. You would write something like:

foreach(var person in people)
{
       //do something to person
}

Note how you yourself chose the name person. It could've been any word, but you basically said "process every single item of the list as my person variable".

Now look at this LINQ query:

filteredPeopleList = people.Where(person => person.Name == "John");

Again, you basically chose person as a placeholder name for every object in the original list (one at a time). The above Linq query is equivalent to

foreach(var person in people)
{
       if(person.Name == "John")
       {
           filteredPeopleList.Add(person);
       }
}

To me, x => x.y is basically saying "for every variable we process (let's call it x), please perform the following operation on it (x.y, get the y property)"

I hope that explains it.

Edit
As a commenter who now deleted his comment mentioned, this isn't exclusively used in LINQ. A lambda expression doesn't have to iterate over an IEnumerable, it can be used to process a single item.
However, LINQ is by far the most common place to encounter lambdas, and I find their use very similar to the foreach loop, which is why I picked this example.

like image 200
Flater Avatar answered Oct 01 '22 23:10

Flater