Hacker News new | past | comments | ask | show | jobs | submit login

LINQ comes in many flavours e.g. LINQ to XML, LINQ to Objects. You're talking about LINQ to SQL. The chained function calls are equivalent to the more SQL-style LINQ, it's a matter of personal preference and which sits better given the context. Personally I always prefer the chained methods with lambdas.

However don't let the seemingly chained methods fool you! The great thing about LINQ is that is defers execution, by building an expression tree [1], meaning the code is lazily executed only when needed. And the expression tree means that everything (filtering, projection etc) is done in a single for loop [2]. e.g.

    var results = collection.Select(item => item.Foo).Where(foo => foo < 3);
This builds an expression tree, but no work has been undertaken on our collection. When we attempt to enumerate the results, the expression tree is converted to code (again, as a single for loop, not multiple iterations as the code might seem):

    results.ToList();
It's extremely cool to work with and highly expressive. One of my favourite features of C#

[1] http://blogs.msdn.com/b/charlie/archive/2007/12/09/deferred-...

[2] http://stackoverflow.com/questions/7324033/what-are-the-bene...




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: