2009-01-19 44 views
5

Có cách nào để sử dụng LoadWith nhưng chỉ định các trường được trả về?LINQ to sql LoadWith trường giới hạn trả về

Ví dụ, nếu tôi có hai bảng 1) Sản phẩm 2) Categories

và làm điều gì đó như

DataLoadOptions dlo = new DataLoadOptions(); 
dlo.LoadWith<Products>(d => d.Categories); 
db.LoadOptions = dlo; 

MyDataContext db = new MyDataContext(); 
var result = from d in db.Products 
      select d; 

khi tôi kiểm tra các truy vấn trong hồ sơ tôi thấy rằng tất cả các hàng từ bảng Categories đang được trả lại. Tất cả những gì tôi thực sự cần là trường "Tên".

Tôi biết tôi có thể viết lại truy vấn bằng cách sử dụng kết nối nhưng tôi cần trả về tập kết quả dưới dạng loại dữ liệu "Sản phẩm", đó là lý do tôi sử dụng LoadWith.

Trả lời

1

Không thể thực hiện điều đó với LoadWith.

Bạn có thể thử với truy vấn lồng nhau trong phép chiếu, mặc dù điều đó sẽ chậm: 1 truy vấn cho mỗi phụ huynh (do đó 1 truy vấn cho danh mục có liên quan cho mỗi sản phẩm được tải).

0

Bạn có thể sử dụng một máy chiếu, nhưng bạn cần phải đối phó với các loại anynomus sau đó

select new {Order = order, ProductName = order.Product.Name, 
      CustomerName = order.Customer.Name, 
      OrderType = order.OrderType.Name } // etc