为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

C#
墨色风雨 2019-06-25 16:34:49
流利的查询表达式-一个比另一个有什么好处吗?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();两者之间有什么区别吗?还是两者之间有什么特别的好处呢?
查看完整描述

3 回答

?
忽然笑

TA贡献1806条经验 获得超5个赞

当我可以这样写整个表达式时,我更喜欢使用后者(有时称为“查询理解语法”)。

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();

我觉得这有点容易读懂。


查看完整回答
反对 回复 2019-06-25
?
慕容森

TA贡献1853条经验 获得超18个赞

每种风格都有各自的优缺点。查询语法在连接时会更好,而且它很有用。放任关键字,使在查询中创建临时变量变得容易。

另一方面,FLUENT语法具有更多的方法和操作,这些方法和操作不是通过查询语法公开的。另外,由于它们只是扩展方法,所以您可以编写自己的扩展方法。

我发现,每次我开始使用查询语法编写LINQ语句时,我都不得不将其放在括号中,然后返回到使用FLUENT LINQ扩展方法。查询语法本身没有足够的特性可供使用。


查看完整回答
反对 回复 2019-06-25
  • 3 回答
  • 0 关注
  • 352 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信