中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何使用LINQ查詢非泛型類型

發布時間:2021-07-12 17:13:18 來源:億速云 閱讀:208 作者:chen 欄目:編程語言

本篇內容介紹了“如何使用LINQ查詢非泛型類型”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

LINQ能實現查詢泛型對象或者實現了IEnumerable接口的對象。然而,諸如ArrayList這樣的非泛型集合并沒有實現IEnumerable接口。接下來,讓我們看看,在這種情況下,如何使用LINQ查詢非泛型集合。

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接口導致不能使用LINQ進行查詢。那么, 是否我們能妄下結論說LINQ不能查詢非泛型集合呢?那么那些返回ArrayList對象的類庫將何去何從?我們是否能巧妙地處理這些問題或者使用能返回 泛型集體的方法代替呢?在不改變特性的前提下,讓我們看看三個解決問題的小技巧。

方法一,顯式指定變量類型,該類型與集合中的對象類型必須一致。


通過顯式聲明變量類型進行查詢,你可以將集合中的每個對象轉換成指定的對象。

C#
1    var cc = from Cars car in carList
2             where car.CarMake == "BMW"
3             select car;
VB.net

1      Dim cc = _
2            From car As Cars In carList _
3            Where car.CarMake = "BMW" _
4            Select car
注意我們將轉變量car換成Cars

方法二,使用Cast方法


Cast方法可以將(實現IEnumerable)接口的)非泛型集合返回IEnumerable接口對象。一旦我們得到IEnumerable接口對象,我們就可以使用LINQ查詢了。

C#
1    var cc1 = from car in carList.Cast

注意,方法一中的所介紹的方法與這種方法相似。

方法三,除了Cast運算符,我們也可以使用OfType

OfType可以過濾集合中相同類型的元素,如果你的集合中包含了不同類型的元素。這個方法得到指定類型的元素對象。

C#

1    var cc2 = from car in carList.OfType

VB.net

1      Dim cc2 = _
2            From car In carList.OfType(Of Cars)() _
3            Where car.CarMake = "BMW" _
4            Select car

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查詢非泛型類型”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

常德市| 保山市| 墨竹工卡县| 额尔古纳市| 洛隆县| 桂平市| 宾阳县| 宁明县| 湖州市| 三河市| 平塘县| 湖南省| 新乡县| 托里县| 灌南县| 宝兴县| 孝感市| 晋中市| 山阴县| 泾川县| 芜湖市| 连城县| 工布江达县| 油尖旺区| 高青县| 曲靖市| 田东县| 塔城市| 静乐县| 桐城市| 栾川县| 双桥区| 兴仁县| 象山县| 土默特左旗| 汉川市| 泽普县| 缙云县| 佛坪县| 梓潼县| 含山县|