流利的查询表达式-一个比另一个有什么好处吗?

流利的查询表达式-一个比另一个有什么好处吗?

Linq是自泛型以来对.NET的最大改进之一,它为我节省了大量的时间和代码行。然而,对于我来说,流利的语法似乎比查询表达式语法更自然。

var title = entries.Where(e => e.Approved)
    .OrderBy(e => e.Rating).Select(e => e.Title)
    .FirstOrDefault();var query = (from e in entries             where e.Approved
             orderby e.Rating
             select e.Title).FirstOrDefault();

两者之间有什么区别吗?还是两者之间有什么特别的好处呢?


墨色风雨
浏览 353回答 3
3回答

忽然笑

当我可以这样写整个表达式时,我更喜欢使用后者(有时称为“查询理解语法”)。var titlesQuery = from e in entries                  where e.Approved                   orderby e.Rating                   select e.Titles;var title = titlesQuery.FirstOrDefault();一旦我必须加上(括号)和.MethodCalls()我变了。当我使用前者时,我通常在每行添加一个子句,如下所示:var title = entries    .Where (e => e.Approved)     .OrderBy (e => e.Rating)     .Select (e => e.Title)     .FirstOrDefault();我觉得这有点容易读懂。

慕容森

每种风格都有各自的优缺点。查询语法在连接时会更好,而且它很有用。放任关键字,使在查询中创建临时变量变得容易。另一方面,FLUENT语法具有更多的方法和操作,这些方法和操作不是通过查询语法公开的。另外,由于它们只是扩展方法,所以您可以编写自己的扩展方法。我发现,每次我开始使用查询语法编写LINQ语句时,我都不得不将其放在括号中,然后返回到使用FLUENT LINQ扩展方法。查询语法本身没有足够的特性可供使用。
打开App,查看更多内容
随时随地看视频慕课网APP