Tôi đã sử dụng tham gia vào LINQ để tham gia 2 bảng. Sự khác biệt giữa tham gia và Bao gồm là gì. Từ những gì tôi thấy, cả hai đều hành xử giống nhau.LINQ Bao gồm so với Tham gia. Chúng có tương đương không?
Include vs. Join
Tôi đã sử dụng tham gia vào LINQ để tham gia 2 bảng. Sự khác biệt giữa tham gia và Bao gồm là gì. Từ những gì tôi thấy, cả hai đều hành xử giống nhau.LINQ Bao gồm so với Tham gia. Chúng có tương đương không?
Include vs. Join
Được bao gồm nhằm giữ lại cấu trúc và đồ thị đối tượng ban đầu. Tham gia là cần thiết để trình bày một biểu diễn phẳng của đồ thị đối tượng hoặc tham gia các loại không liên quan tự nhiên thông qua biểu đồ (ví dụ: tham gia thành phố của khách hàng với thành phố của cơ sở giao hàng).
Hãy so sánh như sau: db.Customers.Include("Orders")
Tạo một đồ thị đối tượng như thế này:
Customer
Order
Order
Order
Ngược lại, nếu bạn làm tương tự với một tham gia dự vào một loại vô danh, bạn có thể nhận được như sau:
from c in db.Customers
join o in db.Orders on c.CustomerId equals o.CustomerId
select new {c, o}
// produces new Anonymous<Customer, Order>
Mặc dù cả hai có thể đưa ra yêu cầu tương tự cho cơ sở dữ liệu, loại kết quả có thể khác nhau.
Theo nghĩa nào đó, có. Bao gồm được thực hiện như một tham gia. Tùy thuộc vào tính vô hiệu của liên kết được bao gồm, nó là một tham gia bên trong hoặc bên trái.
Bạn luôn có thể xây dựng một bao gồm chính mình bằng cách sử dụng một tham gia, như thế này:
db.Users.Select(u => new { u, u.City })
này là một "bao gồm" cho thành phố của người dùng. Nó thể hiện chính nó như là một tham gia SQL.
Xin chào, bạn có thể xem http://stackoverflow.com/q/18809817/859154 không? đó là về một cái gì đó bạn đã nói ở đây trong câu trả lời của bạn. –
nhưng là kết quả giống nhau và có khi nào nên sử dụng .Include vs a join –
Không, phép nối tạo ra một kiểu ẩn danh (TResult) thông qua SelectMany. bao gồm sản xuất TSource với TCollection háo hức nạp chứ không phải là tải lười biếng. –