Điều này chủ yếu đi vào lịch sử của LINQ.
LINQ ban đầu dự định giống như SQL và được sử dụng (phần lớn, mặc dù không độc quyền) để kết nối với cơ sở dữ liệu SQL. Điều này dẫn đến phần lớn thuật ngữ của nó dựa trên SQL.
Vì vậy, "chọn" đến từ SQL select
tuyên bố, và "tổng hợp" đến từ SQL chức năng tổng hợp (ví dụ, count
, sum
, avg
, min
,max
).
Đối với những người đặt câu hỏi về mức độ mà LINQ ban đầu liên quan đến SQL, tôi muốn tham khảo (ví dụ) các bài viết của Microsoft về Cω, một ngôn ngữ được Microsoft Research nghĩ ra và dường như là nơi mà hầu hết các kiến thức cơ bản về LINQ đã hoạt động ra trước khi chúng được thêm vào C # và .NET.
Ví dụ, hãy xem xét một bài viết MSDN trên Cω , trong đó nói:
Toán tử truy vấn trong Cω
Cω thêm hai lớp toán tử truy vấn rộng vào ngôn ngữ C #:
- Toán tử dựa trên XPath để truy vấn các biến thành viên của đối tượng theo tên hoặc theo loại.
- Các toán tử dựa trên SQL để thực hiện các truy vấn tinh vi liên quan đến phép chiếu, nhóm và nối dữ liệu từ một hoặc nhiều đối tượng.
Ít nhất theo như tôi biết, các toán tử dựa trên XPath không bao giờ được thêm vào C #, chỉ để lại các toán tử được ghi lại (trước khi LINQ tồn tại) là dựa trên SQL.
Bây giờ, chắc chắn đúng là LINQ không giống với các toán tử truy vấn dựa trên SQL trong Cω. Cụ thể, LINQ tuân theo các đối tượng cơ bản của C # và gọi cú pháp chặt chẽ hơn nhiều so với C đã làm. Các truy vấn C followed theo cú pháp SQL thậm chí chặt chẽ hơn, do đó bạn có thể viết một cái gì đó như thế này (một lần nữa, được rút ra trực tiếp từ bài viết được liên kết ở trên):
rows = select c.ContactName, o.ShippedDate
from c in DB.Customers
inner join o in DB.Orders
on c.CustomerID == o.CustomerID;
Và vâng, cùng một bài viết nói về việc sử dụng các truy vấn dựa trên SQL để truy vấn dữ liệu đến từ cơ sở dữ liệu SQL thực tế:
Để kết nối với cơ sở dữ liệu SQL trong Cω, nó phải được hiển thị dưới dạng một tập hợp được quản lý (nghĩa là tệp thư viện .NET), sau đó được ứng dụng tham chiếu. Một cơ sở dữ liệu quan hệ có thể được hiển thị với Cω dưới dạng một tổ hợp được quản lý bằng cách sử dụng công cụ dòng lệnh sql2comega.exe hoặc hộp thoại Thêm cơ sở dữ liệu ... trong Visual Studio. Các đối tượng cơ sở dữ liệu được Cω sử dụng để thể hiện cơ sở dữ liệu quan hệ được lưu trữ bởi máy chủ. Một đối tượng cơ sở dữ liệu có một thuộc tính công khai cho mỗi bảng hoặc dạng xem và một phương thức cho mỗi hàm có giá trị bảng được tìm thấy trong cơ sở dữ liệu. Để truy vấn cơ sở dữ liệu quan hệ, một bảng, dạng xem hoặc hàm có giá trị bảng phải được chỉ định làm đầu vào cho một hoặc nhiều toán tử dựa trên SQL.
Chương trình và đầu ra mẫu sau đây cho thấy một số khả năng sử dụng các toán tử dựa trên SQL để truy vấn cơ sở dữ liệu quan hệ trong Cω. Cơ sở dữ liệu được sử dụng trong ví dụ này là cơ sở dữ liệu Northwind mẫu đi kèm với Microsoft SQL Server. Tên DB được sử dụng trong ví dụ này đề cập đến một thể hiện toàn cầu của một đối tượng Cơ sở dữ liệu trong không gian tên Northwind của cụm Northwind.dll được tạo bằng sql2comega.exe .
Vì vậy, có, ngay từ đầu (hoặc thậm chí trước khi bắt đầu, tùy thuộc vào quan điểm của bạn) LINQ rõ ràng dựa trên SQL và dự định cụ thể để cho phép truy cập dữ liệu trong cơ sở dữ liệu SQL.