LINQ - Đối tượng
LINQ to Objects cung cấp việc sử dụng bất kỳ truy vấn LINQ nào hỗ trợ IEnumerable <T> để truy cập các bộ sưu tập dữ liệu trong bộ nhớ mà không cần đến nhà cung cấp LINQ (API) như trong trường hợp LINQ to SQL hoặc LINQ to XML.
Giới thiệu LINQ cho các đối tượng
Các truy vấn trong LINQ to Objects trả về các biến kiểu thường chỉ IEnumerable <T>. Tóm lại, LINQ to Objects cung cấp một cách tiếp cận mới cho các bộ sưu tập như trước đó, điều quan trọng là phải viết mã hóa dài (trừ các vòng lặp phức tạp nhiều) để truy xuất dữ liệu từ một bộ sưu tập, hiện được thay thế bằng cách viết mã khai báo mô tả rõ ràng dữ liệu mong muốn đó là bắt buộc để truy xuất.
Ngoài ra còn có nhiều ưu điểm của LINQ to Object so với các vòng lặp foreach truyền thống như dễ đọc hơn, lọc mạnh mẽ, khả năng nhóm, sắp xếp thứ tự nâng cao với mã hóa ứng dụng tối thiểu. Các truy vấn LINQ như vậy cũng có bản chất nhỏ gọn hơn và có thể di chuyển đến bất kỳ nguồn dữ liệu nào khác mà không cần bất kỳ sửa đổi nào hoặc chỉ cần sửa đổi một chút.
Dưới đây là một ví dụ đơn giản về LINQ to Objects -
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace LINQtoObjects {
class Program {
static void Main(string[] args) {
string[] tools = { "Tablesaw", "Bandsaw", "Planer", "Jointer", "Drill", "Sander" };
var list = from t in tools select t;
StringBuilder sb = new StringBuilder();
foreach (string s in list) {
sb.Append(s + Environment.NewLine);
}
Console.WriteLine(sb.ToString(), "Tools");
Console.ReadLine();
}
}
}
Trong ví dụ, một mảng chuỗi (công cụ) được sử dụng làm tập hợp các đối tượng được truy vấn bằng cách sử dụng LINQ to Objects.
Objects query is:
var list = from t in tools select t;
Khi đoạn mã trên được biên dịch và thực thi, nó tạo ra kết quả sau:
Tablesaw
Bandsaw
Planer
Jointer
Drill
Sander
Truy vấn trong Bộ sưu tập bộ nhớ bằng LINQ tới các đối tượng
C #
using System;
using System.Collections.Generic;
using System.Linq;
namespace LINQtoObjects {
class Department {
public int DepartmentId { get; set; }
public string Name { get; set; }
}
class LinqToObjects {
static void Main(string[] args) {
List<Department> departments = new List<Department>();
departments.Add(new Department { DepartmentId = 1, Name = "Account" });
departments.Add(new Department { DepartmentId = 2, Name = "Sales" });
departments.Add(new Department { DepartmentId = 3, Name = "Marketing" });
var departmentList = from d in departments
select d;
foreach (var dept in departmentList) {
Console.WriteLine("Department Id = {0} , Department Name = {1}",
dept.DepartmentId, dept.Name);
}
Console.WriteLine("\nPress any key to continue.");
Console.ReadKey();
}
}
}
VB
Imports System.Collections.Generic
Imports System.Linq
Module Module1
Sub Main(ByVal args As String())
Dim account As New Department With {.Name = "Account", .DepartmentId = 1}
Dim sales As New Department With {.Name = "Sales", .DepartmentId = 2}
Dim marketing As New Department With {.Name = "Marketing", .DepartmentId = 3}
Dim departments As New System.Collections.Generic.List(Of Department)(New Department() {account, sales, marketing})
Dim departmentList = From d In departments
For Each dept In departmentList
Console.WriteLine("Department Id = {0} , Department Name = {1}", dept.DepartmentId, dept.Name)
Next
Console.WriteLine(vbLf & "Press any key to continue.")
Console.ReadKey()
End Sub
Class Department
Public Property Name As String
Public Property DepartmentId As Integer
End Class
End Module
Khi đoạn mã trên của C # hoặc VB được biên dịch và thực thi, nó tạo ra kết quả sau:
Department Id = 1, Department Name = Account
Department Id = 2, Department Name = Sales
Department Id = 3, Department Name = Marketing
Press any key to continue.