Why to use lambda expression when we have LINQ queries just to shorten the length of code , increase the speed of development or is there any other reason which can only be achieved by Lambda expression & not by LINQ queries.
-
Usually one of the two is more succinct, depending on the problem - you should use both as appropriateBrokenGlass– BrokenGlass2011-03-16 15:57:04 +00:00Commented Mar 16, 2011 at 15:57
-
1@BrokenGlass: It would definitely be pretty rare for them to be exactly the same in length :)Jon Skeet– Jon Skeet2011-03-16 15:59:46 +00:00Commented Mar 16, 2011 at 15:59
2 Answers
Query expressions only cover a small subset of the LINQ operators, and are only applicable when you have the actual expression involved to hand, rather than (say) having a Func<T, bool> to act as the predicate, in which case things become ugly. So instead of writing:
Func<Foo, bool> predicate = ...; // Get predicate from somewhere
var query = from x in collection
where predicate(x)
select x;
I'd much rather write:
Func<Foo, bool> predicate = ...; // Get predicate from somewhere
var query = collection.Where(predicate);
There are various other cases where using non-query expression syntax is simpler, particularly if your query only uses a single operator.
Query expressions are effectively translated into non-query expressions, so anything you can do in query expressions can be expressed in non-query expressions. Use query expressions where they make the code simpler and more readable; don't use them where they don't.
I have more information about how query expressions work in a blog post that you may be interested in.
1 Comment
any other reason which can only be achieved by Lambda expression & not by LINQ queries.
There are some LINQ extension methods which do not have counterparts in LINQ query expressions, and will require the use of Lambda Expressions. A good example is Enumerable.ToLookup - if you want to create an ILookup, you need to use lambdas to generate this.