LINQ 查询基于 .NET Framework 版本 2.0 中引入的泛型类型。 无需深入了解泛型即可开始编写查询。 但是,可能需要了解 2 个基本概念:

  1. 创建泛型集合类(如 List<T>)的实例时,需将“T”替换为列表将包含的对象类型。 例如,字符串列表表示为 List<string>Customer 对象列表表示为 List<Customer>。泛型列表属于强类型,与将其元素存储为 Object 的集合相比,泛型列表具备更多优势。 如果尝试将 Customer 添加到 List<string>,则会在编译时收到错误。 泛型集合易于使用的原因是不必执行运行时类型转换。

  2. IEnumerable<T> 是一个接口,通过该接口,可以使用 foreach 语句来枚举泛型集合类。 泛型集合类支持 IEnumerable<T>,正如非泛型集合类(如 ArrayList)支持 IEnumerable

有关泛型的详细信息,请参阅泛型

LINQ 查询中的 IEnumerable 变量
LINQ 查询变量被类型化为 IEnumerable<T> 或者派生类型(如 IQueryable<T>)。 看到类型化为 IEnumerable<Customer> 的查询变量时,这只意味着执行查询时,该查询将生成包含零个或多个 Customer 对象的序列。
IEnumerable<Customer> customerQuery =
from cust in customers
where cust.City == "London"
select cust; foreach (Customer customer in customerQuery)
{
Console.WriteLine(customer.LastName + ", " + customer.FirstName);
}

有关详细信息,请参阅 LINQ 查询操作中的类型关系

让编译器处理泛型类型声明

如果愿意,可以使用 var 关键字来避免使用泛型语法。 var 关键字指示编译器通过查看在 from 子句中指定的数据源来推断查询变量的类型。 以下示例生成与上例相同的编译代码:

var customerQuery2 =
from cust in customers
where cust.City == "London"
select cust; foreach(var customer in customerQuery2)
{
Console.WriteLine(customer.LastName + ", " + customer.FirstName);
}

变量的类型明显或显式指定嵌套泛型类型(如由组查询生成的那些类型)并不重要时,var关键字很有用。 通常,我们建议如果使用 var,应意识到这可能使他人更难以理解代码。有关详细信息,请参阅隐式类型局部变量

最新文章

  1. ng-table 简单实例
  2. centos虚拟机网络配置
  3. 对比MFC资源文件谈谈WPF布局方式
  4. 配置ogg异构oracle-mysql(2)源端配置
  5. ANT自动打包U3D安卓项目研究笔记
  6. JAVA基础学习day21--IO流三-File、Properties、PrintWriter与合并、分割流
  7. 取url的键值对,location的search:从?开始的字符串
  8. ubuntu知识收集
  9. ASP.NET学习路线图
  10. 实现函数 isInteger(x) 来判断 x 是否是整数
  11. 【数据压缩】LZ78算法原理及实现
  12. python 初学之账户登录
  13. Flask 扩展 用户会话
  14. 六星经典CSAPP-笔记(11)网络编程
  15. [系统相关]WPS Office 2016 专业增强版 10.8.0.6470 免序列号无限制
  16. Visual Studio 2015 msvsmon.exe crashed when c++ debugging with x64
  17. fis入门-单文件编译之文件优化(optimize)
  18. k8s pod的4种网络模式最佳实战(externalIPs )
  19. eclipse 使用tomcat运行JavaWeb项目,文件修改后为何不用重启tomcat? (运行web项目的4种方式)探究
  20. ExtJs 4.1.1 文件结构解析

热门文章

  1. Java MaxDirectMemorySize
  2. qt截获html请求(继承QNetworkAccessManager和QNetworkReply)
  3. Windows完成端口编程
  4. cmake常用工程示例大集合
  5. iOS密码框的实现方式
  6. 在无界面centos7上部署jdk和tomcat
  7. 一步步教你怎么用python写贪吃蛇游戏
  8. Java NIO 学习笔记(三)----Selector
  9. Python笔记【4】_字典学习
  10. PCA(主成分分析)算法