2009-01-19 1 views
5

Gibt es eine Möglichkeit, LoadWith zu verwenden, aber die Felder anzugeben, die zurückgegeben werden?linq to sql LoadWith Begrenzte Felder zurückgegeben

Zum Beispiel, wenn ich habe zwei Tabellen 1) Produkte 2) Kategorien

und etwas tun, wie

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; 

wenn ich die Abfrage in Profiler überprüfe ich sehe, dass alle Zeilen aus der Tabelle Kategorien werden zurückgegeben. Alles, was ich wirklich brauche, ist das Feld "Name".

Ich weiß, dass ich die Abfrage mit Joins umschreiben kann, aber ich muss die Ergebnismenge als "Produkt" -Datentyp zurückgeben, weshalb ich LoadWith verwende.

Antwort

1

Nein, das ist mit LoadWith nicht möglich.

Sie könnten versuchen, mit einer verschachtelten Abfrage in der Projektion, obwohl das langsam sein wird: 1 Abfrage pro Elternteil (also 1 Abfrage für die verwandte Kategorie pro Produkt geladen).

0

können Sie einen Vorsprung, aber Sie müssen mit anynomus Typen umgehen danach

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