LINQ 查詢語法

有兩種將LINQ查詢寫入 IEnumerable 集合 或 IQueryable數(shù)據(jù)源的基本方法。

  1. 查詢語法或查詢表達(dá)式語法

  2. 方法語法或方法擴(kuò)展語法或連貫語法

查詢語法

查詢語法類似于數(shù)據(jù)庫的SQL(結(jié)構(gòu)化查詢語言)。它在C?;騐B代碼中定義。

LINQ查詢語法:

from <range variable> in <IEnumerable<T> or IQueryable<T> Collection>

<Standard Query Operators> <lambda expression>

<select or groupBy operator> <result formation>

LINQ查詢語法以from關(guān)鍵字開頭,以select關(guān)鍵字結(jié)尾。下面是一個示例LINQ查詢,該查詢返回一個字符串集合,其中包含一個單詞“ Tutorials”。

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

// LINQ查詢語法
var result = from s in stringList
            where s.Contains("Tutorials") 
            select s;

下圖顯示了LINQ查詢語法的結(jié)構(gòu)。

LINQ查詢語法

查詢語法以 From 子句開頭,后跟 Range 變量。From 子句的結(jié)構(gòu)類似于“ From rangeVariableName in i enumerablecollection”。在英語中,這意味著,從集合中的每個對象。它類似于 foreach 循環(huán):foreach(Student s in studentList)。

在FROM子句之后,可以使用不同的標(biāo)準(zhǔn)查詢運(yùn)算符來過濾,分組和聯(lián)接集合中的元素。LINQ中大約有50個標(biāo)準(zhǔn)查詢運(yùn)算符。在上圖中,我們使用了“ where”運(yùn)算符(又稱子句),后跟一個條件。通常使用lambda表達(dá)式來表達(dá)此條件。

LINQ查詢語法始終以Select或Group子句結(jié)尾。Select子句用于整形數(shù)據(jù)。您可以按原樣選擇整個對象,也可以僅選擇某些屬性。在上面的示例中,我們選擇了每個結(jié)果字符串元素。

在下面的示例中,我們使用LINQ查詢語法從Student集合(序列)中找出青少年學(xué)生。

// 學(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 teenAgerStudent = from s in studentList
                      where s.Age > 12 && s.Age < 20
                      select s;
// 學(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) = (From s In studentList _
                                            Where s.Age > 12 And s.Age < 20 _
                                            Select s).ToList()

要記住的要點(diǎn)

  1. 顧名思義,查詢語法與SQL(結(jié)構(gòu)查詢語言)語法相同。

  2. 查詢語法以from子句開頭,可以以SelectGroupBy子句結(jié)尾。

  3. 使用各種其他運(yùn)算符,例如過濾,聯(lián)接,分組,排序運(yùn)算符來構(gòu)造所需的結(jié)果。

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

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