Toán tử truy vấn chuẩn mở rộng các phương thức

Một phần của tài liệu Tìm hiểu công nghệ LINQ và ứng dụng (Trang 26 - 28)

V. LINQ và các kiểu có chung đặc điểm

V.6.1 Toán tử truy vấn chuẩn mở rộng các phương thức

Ví dụ sau cho thấy một cách dễ dàng biểu thức truy vấn và các ngữ nghĩa tương đương truy vấn được viết như là một phương thức dựa trên truy vấn.

Sinh viên thực hiện Nguyễn Văn Thụy & Hoàng Mạnh Giỏi Trang 27

class QueryVMethodSyntax {

static void Main() {

int[] numbers = { 5, 10, 8, 3, 6, 12}; //Query syntax:

IEnumerable<int> numQuery1 = from num in numbers where num % 2 == 0 orderby num

select num; //Method syntax:

IEnumerable<int> numQuery2 = numbers.Where(num => num % 2 == 0).OrderBy(n => n);

foreach (int i in numQuery1) {

Console.Write(i + " "); }

Console.WriteLine(System.Environment.NewLine); foreach (int i in numQuery2)

{

Console.Write(i + " "); }

// Keep the console open in debug mode.

Console.WriteLine(System.Environment.NewLine); Console.WriteLine("Press any key to exit"); Console.ReadKey(); } } /* Output: 6 8 10 12 6 8 10 12 */

Đầu ta từ hai ví dụ là giống hệt nhau. Bạn có thể thấy rằng các loại của biến truy vấn biến là cùng một trong hai hình thức: IEnumerable (T).

Để tìm hiểu phương thức dựa trên câu truy vấn, hãy kiểm tra nó chặt chẽ hơn. Ở bên phải của biểu thức, chú ý rằng chú ý rằng mệnh đề where giờ đây không còn được thể hiện như là một phương thức dụ trên đối tượng numbers, mà là bạn sẽ gọi lại một loại kiểu IEnumerable<int> . Nếu bạn là quen thuộc với giao diện IEnumerable (T), bạn biết rằng nó không có một phương thức where. Tuy nhiên, nếu bạn gọi trình hỗ trợ thông minh hoàn thành danh sách trong Visual Studio IDE, bạn sẽ thấy không chỉ là một phương thức where, nhưng nhiều phương thức khác như: select, SelectMany, Join, và Orderby. Đây là tất cả các toán tử truy vấn chuẩn.

Sinh viên thực hiện Nguyễn Văn Thụy & Hoàng Mạnh Giỏi Trang 28

Mặc dù nó có vẻ như nếu giao diện IEnumerable (T) đã được định nghĩa lại để bổ xung các phương thức này, trên thực tế cái này không phải là cách. Các toán tử truy vấn chuẩn được thực hiện như là một loại phương thức mới được gọi là các phương thức mở rộng. Các phương thức mở rộng " extend " một loại hiện có; chúng có thể được gọi là nếu chúng đã được thể hiện các phương thức dựa trên kiểu. Toán tử truy vấn chuẩn mở rộng interface IEnumerable (T) và đó là lý do tại sao, bạn có thể viết numbers.Where (...).

Để bắt đầu sử dụng LINQ, bạn phải chắc chắn rằng bạn thực sự hiểu tất cả về các phương thức mở rộng là làm thế nào để đem chúng vào trong phạm vi ứng dụng của bạn bằng cách sử dụng đúng hướng dẫn. Điều này được giải thích thêm trong phần làm thế nào để: Tạo một dự án LINQ.

Một phần của tài liệu Tìm hiểu công nghệ LINQ và ứng dụng (Trang 26 - 28)

Tải bản đầy đủ (PDF)

(122 trang)