Hướng dẫn này sẽ giới thiệu cho bạn những kiến thức cơ bản về LINQ framework và cung cấp cho bạn bản tóm tắt về kiến trúc LINQ, trình cung cấp dữ liệu và cấu trúc truy vấn.
- int[] numbers = { 3, 6, 7, 9, 2, 5, 3, 7 };
- int i = 0;
- // Display numbers larger than 5
- while (i < numbers.GetLength(0))
- {
- if (numbers[i] > 5)
- Console.WriteLine(numbers[i]);
- ++i;
- }
May mắn thay, LINQ đã đến giải cứu và biến đoạn mã như trên trở thành dĩ vãng. Với LINQ, các nguồn dữ liệu giờ đây có thể được truy vấn theo cú pháp giống SQL , như được hiển thị trong đoạn mã được viết lại bên dưới:
- int[] numbers = { 3, 6, 7, 9, 2, 5, 3, 7 };
- var res = from n in numbers
- where n > 5
- select n;
- foreach (int n in res)
- Console.WriteLine(n);
Bạn sẽ nhận ra nhiều câu lệnh SQL tương tự trong LINQ, như Select, Where, Distinct và Group By.
Bạn có thể quan tâm đến việc truy vấn dữ liệu từ nhiều nguồn khác nhau, chẳng hạn như mảng, từ điển, xml và các thực thể được tạo từ khung thực thể. Nhưng thay vì phải sử dụng một API khác nhau cho mỗi nguồn dữ liệu, LINQ cung cấp một mô hình lập trình nhất quán và thống nhất để làm việc với tất cả các nguồn dữ liệu được hỗ trợ. Nói cách khác, truy vấn LINQ để tìm nạp một phần tử từ một mảng và một tệp xml sẽ trông rất giống nhau.
Một số nguồn dữ liệu LINQ được sử dụng nhiều nhất, tất cả đều là một phần của .NET framework, là:
Miễn là bạn bao gồm không gian tên System.Linq trong mã của mình, bạn có thể sử dụng tất cả các nguồn dữ liệu trên.
Bạn có thể sử dụng LINQ từ tất cả các ngôn ngữ .NET phổ biến (C #, VB.NET và F#) như được minh họa trong tổng quan kiến trúc bên dưới. Các ngôn ngữ có thể truy vấn bất kỳ Nguồn dữ liệu LINQ nào, với sự trợ giúp của lớp được gọi là Truy vấn tích hợp ngôn ngữ .NET (LINQ).
Điều đáng chú ý là mặc dù tất cả các ngôn ngữ .NET đều chia sẻ cùng một lớp LINQ (hình chữ nhật tròn màu xanh lá cây), một số ngôn ngữ được "kích hoạt" nhiều LINQ hơn những ngôn ngữ khác. Ví dụ, F# cung cấp nhiều chức năng LINQ hơn C# và VB.NET.
LINQ cung cấp hai cách để viết truy vấn: 1) với cú pháp giống SQL được gọi là biểu thức Truy vấn hoặc 2) một phương thức giống như cách tiếp cận được gọi là biểu thức Lambda
Hãy lấy một ví dụ nhỏ để có cái nhìn rõ hơn về cấu trúc truy vấn: Trong tập hợp các số ngẫu nhiên, chúng ta chỉ muốn lấy các giá trị lớn hơn 50, sắp xếp chúng theo thứ tự tăng dần và cuối cùng truyền kết quả thành chuỗi. Điều này thường yêu cầu khá nhiều dòng mã, nếu bạn phải làm điều này với các vòng lặp và điều kiện mã, nhưng với biểu thức truy vấn LINQ, bạn có thể chỉ cần viết:
- int[] numbers = { 7, 53, 45, 99 };
- var res = from n in numbers
- where n > 50
- orderby n
- select n.ToString();
Biểu thức truy vấn luôn bắt đầu bằng "từ phần tử trong bộ sưu tập" và lặp qua từng phần tử trong bộ sưu tập. Giống như trong các câu lệnh SQL, bạn có thể lọc hoặc chiếu thêm truy vấn của mình, như chúng tôi đã làm với where , orderby và select . Câu lệnh cuối cùng, "select n.ToString ()" chiếu kết quả cuối cùng thành các chuỗi (“53” và “99”).
Bạn cũng có thể viết nó dưới dạng một biểu thức Lambda, như đã đề cập trước đó. Sau đó, bạn nhận được một cấu trúc giống như phương thức:
- int[] numbers = { 7, 53, 45, 99 };
- var res = numbers.Where(n => n > 50)
- .OrderBy(n => n)
- .Select(n => n.ToString());
" N => n…" tạo ra một thể hiện của mỗi phần tử được lặp lại trong tập hợp. Ở phía bên trái của "=>" là các tham số đầu vào và ở phía bên kia là biểu thức.
Tôi hy vọng hướng dẫn này hữu ích trong việc giới thiệu cho bạn về LINQ <3
Đăng nhận xét