当前位置:  开发笔记 > 编程语言 > 正文

如何在LINQ和C#中引入'from/where/select'关键字?

如何解决《如何在LINQ和C#中引入'from/where/select'关键字?》经验,为你挑选了1个好方法。

当我在导入System.Linq命名空间后输入'from'(在LINQ查询中)时,它被理解为关键字.这种魔力是如何发生的?

是'来自'某种类型的扩展方法?



1> Marc Gravell..:

在实践中,是 - LINQ关键字映射到扩展方法.但实际上,它更有趣; 从字面上看,编译器直接替换了几个关键方法,即

var qry = from cust in db.Customers
          where cust.IsActive
          select cust;

变为:

var qry = db.Customers.Where(cust => cust.IsActive);

(如果我们有一个非平凡的选择,它会添加.选择(...一些投影...)

不同的LINQ kewords映射到不同的方法 - 即有OrderBy,GroupBy,ThenBy,OrderByDescending等.

IEnumerable/ 的情况下IQueryable,然后通过扩展方法解析这些(通常由Enumerable/提供Queryable) - 但是,如果您的可查询对象声明了自己的Where/OrderBy/etc,那么这些将被优先使用.

Jon Skeet 在深度C#的后半部分更多地介绍了这一点.我还看到了Jon的一个例子,他在这里讨论了一些非常奇怪的含义 - 例如在类型上调用静态方法.

推荐阅读
手机用户2502852037
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有