LINQ 方法語法

在上一節(jié)中,您已經(jīng)了解了LINQ查詢語法。在這里,您將了解方法語法。

方法語法(也稱為連貫語法)使用Enumerable 或 Queryable靜態(tài)類中包含的擴(kuò)展方法,類似于您調(diào)用任何類的擴(kuò)展方法的方式。  

編譯器在編譯時(shí)將查詢語法轉(zhuǎn)換為方法語法。

以下是LINQ方法語法查詢示例,該查詢返回字符串集合,其中包含單詞“ Tutorials”。

// 字符串集合
IList<string> stringList = new List<string>() { 
    "C# Tutorials",
    "VB.NET Tutorials",
    "Learn C++",
    "MVC Tutorials" ,
    "Java" 
};

// LINQ查詢語法
var result = stringList.Where(s => s.Contains("Tutorials"));

下圖說明了LINQ方法語法的結(jié)構(gòu)。

LINQ方法語法結(jié)構(gòu)

如上圖所示,方法語法包括擴(kuò)展方法和 Lambda 表達(dá)式。在枚舉(Enumerable)類中定義的擴(kuò)展方法 Where ()。

如果檢查Where擴(kuò)展方法的簽名,就會(huì)發(fā)現(xiàn)Where方法接受一個(gè) predicate 委托 Func<Student,bool>。這意味著您可以傳遞任何接受Student對(duì)象作為輸入?yún)?shù)并返回布爾值的委托函數(shù),如下圖所示。lambda表達(dá)式用作Where子句中傳遞的委托。在下一節(jié)學(xué)習(xí) Lambda 表達(dá)式。

Where 中的 Func 委托

下面的示例演示如何將LINQ方法語法查詢與IEnumerable <T>集合一起使用。

// 學(xué)生集合
IList<Student> studentList = new List<Student>() { 
        new Student() { StudentID = 1, StudentName = "John", Age = 13} ,
        new Student() { StudentID = 2, StudentName = "Moin",  Age = 21 } ,
        new Student() { StudentID = 3, StudentName = "Bill",  Age = 18 } ,
        new Student() { StudentID = 4, StudentName = "Ram" , Age = 20} ,
        new Student() { StudentID = 5, StudentName = "Ron" , Age = 15 } 
    };

// LINQ方法語法找出青少年學(xué)生
var teenAgerStudents = studentList.Where(s => s.Age > 12 && s.Age < 20)
                                  .ToList<Student>();
// 學(xué)生集合
Dim studentList = New List(Of Student) From {
        New Student() With {.StudentID = 1, .StudentName = "John", .Age = 13},
        New Student() With {.StudentID = 2, .StudentName = "Moin", .Age = 21},
        New Student() With {.StudentID = 3, .StudentName = "Bill", .Age = 18},
        New Student() With {.StudentID = 4, .StudentName = "Ram", .Age = 20},
        New Student() With {.StudentID = 5, .StudentName = "Ron", .Age = 15}
    }

// LINQ方法語法找出青少年學(xué)生
Dim teenAgerStudents As IList(Of Student) = studentList.Where(Function(s) s.Age > 12 And s.Age < 20)
                                                       .ToList()

 要記住的要點(diǎn)

  1. 顧名思義,方法語法就像調(diào)用擴(kuò)展方法。

  2. LINQ方法語法又稱Fluent語法(連貫語法),因?yàn)樗试S一系列擴(kuò)展方法調(diào)用。

  3. 隱式類型變量-var可用于保存LINQ查詢的結(jié)果。

丰满人妻一级特黄a大片,午夜无码免费福利一级,欧美亚洲精品在线,国产婷婷成人久久Av免费高清