C#3.0新增功能09 LINQ 基础03 LINQ 和泛型类型
2024-09-01 04:17:13
系列目录 【已更新最新开发文章,点击查看详细】
LINQ 查询基于 .NET Framework 版本 2.0 中引入的泛型类型。 无需深入了解泛型即可开始编写查询。 但是,可能需要了解 2 个基本概念:
创建泛型集合类(如 List<T>)的实例时,需将“T”替换为列表将包含的对象类型。 例如,字符串列表表示为
List<string>
,Customer
对象列表表示为List<Customer>
。泛型列表属于强类型,与将其元素存储为 Object 的集合相比,泛型列表具备更多优势。 如果尝试将Customer
添加到List<string>
,则会在编译时收到错误。 泛型集合易于使用的原因是不必执行运行时类型转换。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
,应意识到这可能使他人更难以理解代码。有关详细信息,请参阅隐式类型局部变量。
系列目录 【已更新最新开发文章,点击查看详细】
最新文章
- ng-table 简单实例
- centos虚拟机网络配置
- 对比MFC资源文件谈谈WPF布局方式
- 配置ogg异构oracle-mysql(2)源端配置
- ANT自动打包U3D安卓项目研究笔记
- JAVA基础学习day21--IO流三-File、Properties、PrintWriter与合并、分割流
- 取url的键值对,location的search:从?开始的字符串
- ubuntu知识收集
- ASP.NET学习路线图
- 实现函数 isInteger(x) 来判断 x 是否是整数
- 【数据压缩】LZ78算法原理及实现
- python 初学之账户登录
- Flask 扩展 用户会话
- 六星经典CSAPP-笔记(11)网络编程
- [系统相关]WPS Office 2016 专业增强版 10.8.0.6470 免序列号无限制
- Visual Studio 2015 msvsmon.exe crashed when c++ debugging with x64
- fis入门-单文件编译之文件优化(optimize)
- k8s pod的4种网络模式最佳实战(externalIPs )
- eclipse 使用tomcat运行JavaWeb项目,文件修改后为何不用重启tomcat? (运行web项目的4种方式)探究
- ExtJs 4.1.1 文件结构解析