.NET 007: What We Know About LINQ
In this week’s episode of Adventure in .NET the panel shares their experiences using LINQ or Language Integrated Query. They discuss the benefits of using LINQ along with the struggles they have with it. They share some of their favorite tips and tricks for using LINQ.
LINQ is something .NET developers use on a daily basis. The panel starts by giving a little background on LINQ. LINQ was introduced to the .NET framework 3.5 with the intent of providing a better way of dealing with data. The panel explains what they did before using LINQ and what it was like making the switch.
LINQ has two different syntaxes, the query syntax, and the lambda syntax. The panel discusses the similarities between query syntax and SQL. They explain why they didn’t just use SQL. Because SQL and query were so similar, the panel both started by using query. They share different ways to get used to the query syntax and the lambda syntax.
The panel reveals that there are a number of features in .NET that were built to support LINQ. Lambda expressions, anonymous type, and tuples are some examples of features that support LINQ. The panel defines these features and explains how they help you sort through collections of data.
The panel considers why some programmers are turned off by LINQ. They suppose it is because of its foreign look and that it is not highly structured. Also, LINQ has a lot of syntactic sugar, doing a lot of stuff for you behind the scenes. The panel discusses ways LINQ simplifies workflow and shares tips for using LINQ to simply code.
Programmers often complain that using LINQ to objects or LINQ to entities and chaining LINQ extensions is an improper use of LINQ. The panel explains how using LINQ this way makes the code cleaner and more readable. The panel compares the readability of LINQ statements to SQL statements. They explain why LINQ is easier to read and understand.
The panel shares their tips and tricks for using LINQ statements and deferred executions. They discuss the possible use cases for using deferred executions. They also consider the downsides and gotchas to watch for when using deferred executions.
LINQ to entity and the Entity framework are considered. The panel discusses the common complaints made about Entity. They address these complaints, explaining how LINQ to entity and the framework has improved. The panel suggests the use of LINQPad for LINQ statements to see the generated sequel statement. They explain what to watch out for when using LINQ pad this way.
One struggle panel discusses is knowing when to use first or firstordefault. They share tips, things to look for when using either one of these in LINQ. First and single are compared, the panel explains why they use first more than single.
The possibilities for extension methods in LINQ are considered. Along with using C# extension methods the panel discussing using custom extension methods. They share their favorite third party extension methods and explains how they have helped them simplify their code.
While the panel is aware that many programmers are averse to mixing functional programming and object-oriented programming, the panel explains that there are a few functional programming concepts built into LINQ. The benefits of being able to use functional programming in C# is explained.
The panel considers some of the hardest things to do in LINQ and share tips on how to better understand them. Select many and aggregate LINQ queries being to examples they share. The explain what powerful tools they can be. The panel ends the episode with some tips for improving performance when using LINQ
- Shawn Clabough
- Caleb Wells
- Language Integrated Query (LINQ)
- Expression Trees (C#)
- Supporting IAsyncEnumerable with LINQ
- Get Func-y: Delegates in .NET - Jeremy Clark