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