加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

C#3.0中的新增功能09 LINQ 03 LINQ 和泛型类型

发布时间:2020-12-15 22:40:10 所属栏目:百科 来源:网络整理
导读:连载目录????【已更新最新开发文章,点击查看详细】 LINQ? 查询基于 .NET Framework 版本 2.0 中引入的泛型类型。? 无需深入了解泛型即可开始编写查询。? 但是,可能需要了解 2 个基本概念: 创建泛型集合类(如?ListT)的实例时,需将“T”替换为列表将包含
连载目录????【已更新最新开发文章,点击查看详细】

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,应意识到这可能使他人更难以理解代码。有关详细信息,请参阅隐式类型局部变量。

连载目录????【已更新最新开发文章,点击查看详细】

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读