English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
前のセクションでは、LINQクエリ文法について学びました。ここでは、メソッド文法について学びます。
メソッド文法(連続文法とも呼ばれます)は、EnumerableやQueryable静的クラスに含まれる拡張メソッドを使用します。これは、あなたがどのクラスの拡張メソッドを呼び出すかと同じ方法です。
コンパイラは、クエリ文法をメソッド文法にコンパイルします。
以下は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メソッド文法の構造を示しています。
上の図のように、メソッド文法には拡張メソッドとLambda式が含まれています。拡張メソッドは、Enum(Enum)クラスで定義されていますWhere ()。
Where拡張メソッドのシグネチャを確認すると、Whereメソッドが1つの引数を受け取ることがわかります。 predicateデリゲート Func<Student,bool>。これは、Studentオブジェクトを引数に取り、布尔値を返すデリゲート関数を渡すことができることを意味します。以下の図のように、lambda式はWhere子句に渡されるデリゲートとして使用されます。次のセクションでLambda式を学びます。
以下のサンプルでは、LINQメソッド文法クエリとIEnumerable <T>コレクションを一緒に使用する方法を示します。
// 学生コレクション 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メソッド構文で青少年学生を見つける var teenAgerStudents = studentList.Where(s => s.Age > 12 && s.Age < 20) .ToList<Student>();
// 学生コレクション 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メソッド構文で青少年学生を見つける Dim teenAgerStudents As IList(Of Student) = studentList.Where(Function(s) s.Age > 12 And s.Age < 20) .ToList()
その名の通りのメソッド構文拡張メソッドを呼び出すように見えます。
LINQメソッド構文フラuent语法(連続的な语法)とも言います。それは、一連の拡張メソッド呼び出しを許可します。
イミュートアブル型変数-varはLINQクエリの結果を保存するために使用できます。