LINQ 查询基于 .NET Framework 版本 2.0 中引入的泛型类型。 无需深刻了解泛型便可开始编写查询。 可是,可能须要了解 2 个基本概念:html
建立泛型集合类(如 List<T>)的实例时,需将“T”替换为列表将包含的对象类型。 例如,字符串列表表示为 List<string>
,Customer
对象列表表示为 List<Customer>
。泛型列表属于强类型,与将其元素存储为 Object 的集合相比,泛型列表具有更多优点。 若是尝试将 Customer
添加到 List<string>
,则会在编译时收到错误。 泛型集合易于使用的缘由是没必要执行运行时类型转换。api
IEnumerable<T> 是一个接口,经过该接口,可使用 foreach
语句来枚举泛型集合类。 泛型集合类支持 IEnumerable<T>,正如非泛型集合类(如 ArrayList)支持 IEnumerable。ide
有关泛型的详细信息,请参阅泛型。ui
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 查询操做中的类型关系。spa
若是愿意,可使用 var 关键字来避免使用泛型语法。 var
关键字指示编译器经过查看在 from
子句中指定的数据源来推断查询变量的类型。 如下示例生成与上例相同的编译代码:code
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
,应意识到这可能使他人更难以理解代码。有关详细信息,请参阅隐式类型局部变量。htm