2009-01-19 6 views
5

Czy istnieje sposób użycia LoadWith, ale określić zwrócone pola?linq do sql LoadW zwrocie z ograniczonymi polami

Na przykład, jeśli mam dwie tabele 1) Products 2) Kategorie

i zrobić coś podobnego

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; 

kiedy sprawdzić kwerendę w profilera widzę, że wszystkie wiersze z tabeli Kategorie są zwracane. Wszystko, czego naprawdę potrzebuję, to pole "Nazwa".

Wiem, że mogę przepisać zapytanie przy użyciu sprzężeń, ale muszę zwrócić zestaw wyników jako typ danych "Produkt", dlatego używam LoadWith.

Odpowiedz

1

Nie jest to niemożliwe z LoadWith.

Możesz spróbować z zagnieżdżonym zapytaniem w projekcji, ale będzie to powolne: 1 zapytanie na rodzica (więc 1 zapytanie dla powiązanej kategorii dla każdego załadowanego produktu).

0

Można użyć projekcji, ale trzeba do czynienia z typami anynomus potem

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