LINQ to SQL Tutorial
27
Nó sẽ sinh ra một trang trông như sau:
5. Data Sharping
Hiện tại, mỗi khi xác định kết quả truy vấn, chúng ta lấy toàn bộ các cột dữ liệu cần thiết cho các đối
tượng thuộc lớp Product:
Ví dụ, câu truy vấn sau lấy về các sản phẩm:
Và toàn bộ kết quả được trả về:
LINQ to SQL Tutorial
28
Thường thì chúng ta chỉ muốn trả về một tập con của dữ liệu về mỗi sản phẩm. Chúng ta có thể dùng
tính năng data shaping LINQ các trình dich C#, VB mới hỗ trợ để chỉ ra rằng chúng ta chỉ
muốn một tập con bằng cách chỉnh sửa lại câu truy vấn như sau:
Điều này sẽ trả về chỉ một tập con dữ liệu được trả về từ CSDL:
LINQ to SQL Tutorial
29
Một điều thực sự thú vị về LINQ to SQL tôi có thể tận dụng tất cả ưu điểm của các quan hệ trong
hình dữ liệu khi muốn gọt giũa lại dữ liệu. cho phép tôi biểu diễn đầy đủ hiệu quả các câu
truy vấn. Lấy dụ, câu truy vấn dưới đây lấy về ID Name từ thực thể Product, tổng số đơn hàng
đã được đặt cho sản phẩm đó, và rồi lấy tổng giá trị của từng đơn hàng:
LINQ to SQL đủ thông minh để thể chuyển biểu thức LINQ trên thành câu SQL dưới đây khi
nó được thực thi:
LINQ to SQL Tutorial
30
Câu SQL trên cho phép tính toán tất cả các giá trị của NumOrders Revenue từ ngay trên SQL
server, và trả về chỉ những dữ liệu như dưới đây (làm cho việc thực thi được nhanh chóng):
Chúng ta có thể gắn nối tập kết quả vào control GridView để tạo ra một giao diện đẹp hơn:
LINQ to SQL Tutorial
31
Bạn cũng thể được hỗ trợ đầy đủ bởi tính năng intellisense bên trong VS 2008 khi viết các câu
truy vấn LINQ:
Trong dụ trên, tôi đang sử dụng một kiểu danh (anonymous type) dùng object initialization
để gọt giũa và định nghĩa cấu trúc trả về. Một điều thực sự tuyệt vời là VS 2008 cung cấp intellisense
đầy đủ, kiểm tra lúc dịch và cả refactoring khi làm việc cả với các tập kết quả có kiểu vô danh: