LINQ và C # LINQ cung cấp rất nhiều các hoạt động SQL thông thường, chẳng hạn như tham gia truy vấn, nhóm, tập hợp, và phân loại kết quả. Ngoài ra, nó cho phép bạn sử dụng các tính năng objectoriented của C # trong các biểu thức truy vấn và xử lý, chẳng hạn như kết quả truy vấn có thứ bậc.
Gia nhập Bạn thường sẽ muốn tìm kiếm các đối tượng từ nhiều nguồn dữ liệu. LINQ cung cấp các khoản tham gia cung cấp các khả năng để tham gia nhiều nguồn dữ liệu, không phải tất cả trong số đó cần có cơ sở dữ liệu. Giả sử bạn có một danh sách các khách hàng có chứa tên khách hàng, địa chỉ email, và một danh sách các địa chỉ nhà riêng của khách hàng. Bạn có thể sử dụng LINQ để kết hợp cả hai danh sách để tạo ra một danh sách khách hàng, tiếp cận với cả hai địa chỉ email và nhà của họ:
từ khách hàng trong các khách hàng tham gia địa chỉ tại địa chỉ trên
}}}
Output: FirstName == "Donna" Donna Carreras Email: donna0 @ adventure-works.com FirstName == "Donna" (mất hai) Donna Carreras Email: donna0@adventure-works.com
customer.Name bằng address.Name ... điều kiện tham gia được quy định trong phân lớp trên, tương tự như SQL , ngoại trừ các đối tượng tham gia không cần phải bàn hoặc các quan điểm trong một cơ sở dữ liệu. Cú pháp tham gia lớp học là:
[nguồn dữ liệu 1] tham gia [nguồn dữ liệu 2] trên [điều kiện join] Ở đây, chúng tôi đang tham gia hai nguồn dữ liệu, khách hàng và địa chỉ, dựa trên các thuộc tính tên khách hàng trong từng đối tượng. Trong thực tế, bạn có thể tham gia nhiều hơn hai nguồn dữ liệu sử dụng kết hợp tham gia các điều khoản:
từ khách hàng trong các khách hàng tham gia địa chỉ ở địa chỉ trên customer.Name bằng address.Name tham gia hóa đơn trên hoá đơn trên customer.Id bằng với invoice.CustomerId tham gia invoiceItem trong invoiceItems trên invoice.Id bằng invoiceItem.invoiceId một LINQ tham gia điều khoản trả lại kết quả chỉ khi đối tượng đáp ứng được các điều kiện liên kết tồn tại trong tất cả các nguồn dữ liệu. Ví dụ, nếu một khách hàng không có hóa đơn, truy vấn sẽ không trở lại bất cứ điều gì cho khách hàng đó, thậm chí không tên và địa chỉ email. Điều này là tương đương với một điều khoản gia nhập SQL bên trong.
LINQ không thể thực hiện bên ngoài tham gia (trong đó trả về kết quả là nếu một trong các nguồn dữ liệu chứa các đối tượng đáp ứng được các điều kiện tham gia).
Thứ tự và var từ khóa Bạn cũng có thể xác định thứ tự sắp xếp trong truy vấn LINQ với các khoản orderby:
từ khách hàng trong khách hàng orderby customer.LastName chọn của khách hàng; Điều này sắp xếp các kết quả của khách hàng tên cuối cùng trong thứ tự tăng dần. Ví dụ 13-3 cho thấy làm thế nào bạn có thể sắp xếp các kết quả của một truy vấn tham gia.
Ví dụ 13-3. Một sắp xếp tham gia truy vấn
sử dụng hệ thống; using System; sử dụng System.Linq;
namespace Programming_CSharp {// Simple lớp khách hàng public class Customer {// Tương tự như trong Ví dụ 13-1}
đang được dịch, vui lòng đợi..
