您好,登錄后才能下訂單哦!
本篇內容介紹了“如何使用LINQ查詢非泛型類型”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!
LINQ能實現查詢泛型對象或者實現了IEnumerable
C#
1public class Cars 2{ 3public string CarMake { get;set;} 4public string CarModel { get; set; } 5public int Year { get; set; } 6} 7 8 9class Program 10{ 11static void Main(string[] args) 12{ 13 ArrayList carList = new ArrayList(); 14 carList.Add(new Cars 15 { 16 CarMake="BMW", CarModel="BMW Art", Year=1978 17 }); 18 carList.Add(new Cars 19 { 20 CarMake = "BMW", CarModel = "Coupe", Year = 1982 21 }); 22 carList.Add(new Cars 23 { 24 CarMake = "Renault", CarModel = "Alpine", Year = 1972 25 }); 26 carList.Add(new Cars 27 { 28 CarMake = "Porsche", CarModel = "Maisto", Year = 1976 29 }); 30 31 var carQuery = from car in carList 32 where car.CarMake == "BMW" 33 select car; 34} VB.net
如上面的代碼所示,我們聲明Cars對象并將其填充到ArrayList集合當中。并且使用類似LINQ查詢泛型集合的方法來查詢這個ArrayList集合。你認為結果會如何?
當然,上面的代碼并沒有通過編譯,原因是ArrayList并沒有實現IEnumerable
方法一,顯式指定變量類型,該類型與集合中的對象類型必須一致。
通過顯式聲明變量類型進行查詢,你可以將集合中的每個對象轉換成指定的對象。
C# 1 var cc = from Cars car in carList 2 where car.CarMake == "BMW" 3 select car; VB.net
|
方法二,使用Cast方法
Cast方法可以將(實現IEnumerable)接口的)非泛型集合返回IEnumerable
C# 1 var cc1 = from car in carList.Cast |
注意,方法一中的所介紹的方法與這種方法相似。
方法三,除了Cast運算符,我們也可以使用OfType
OfType可以過濾集合中相同類型的元素,如果你的集合中包含了不同類型的元素。這個方法得到指定類型的元素對象。
C#
1 var cc2 = from car in carList.OfType |
VB.net
|
3種方法的全部代碼如下所示
C#
Code 1using System; 2using System.Collections.Generic; 3using System.Linq; 4using System.Text; 5using System.Collections; 6 7namespace QueryArraylistWithLINQ 8{ 9public class Cars 10{ 11public string CarMake { get;set;} 12public string CarModel { get; set; } 13public int Year { get; set; } 14} 15 16 17class Program 18{ 19 static void Main(string[] args) 20 { 21 ArrayList carList = new ArrayList(); 22 carList.Add(new Cars 23 { 24 CarMake = "BMW", 25 CarModel = "BMW Art", 26 Year = 1978 27 }); 28 carList.Add(new Cars 29 { 30 CarMake = "BMW", 31 CarModel = "Coupe", 32 Year = 1982 33 }); 34 carList.Add(new Cars 35 { 36 CarMake = "Renault", 37 CarModel = "Alpine", 38 Year = 1972 39 }); 40 carList.Add(new Cars 41 { 42 CarMake = "Porsche", 43 CarModel = "Maisto", 44 Year = 1976 45 }); 46 47 48 var cc = from Cars car in carList 49 where car.CarMake == "BMW" 50 select car; 51 52 var cc1 = from car in carList.Cast
“如何使用LINQ查詢非泛型類型”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。