Ich habe eine LINQ-Abfrage, die eine Liste verschachtelter Objekte abruft.Gibt es eine Möglichkeit, diese LINQ-Abfrage neu zu schreiben, so dass sie nur eine SQL-Abfrage ausführt?
from c in ClientsRepository.LoadAll()
orderby c.Name
select new ComboBoxOptionGroup
{
Text = c.Name,
Options = from p in c.Projects
orderby p.Name
select new ComboBoxOption
{
Text = p.Name,
Value = p.ID.ToString()
}
}
Leider führt diese LINQ Abfrage in num (Clients) +1 SQL-Abfragen. Gibt es eine elegante Möglichkeit, dies neu zu schreiben, so dass es nur zu einer SQL-Abfrage führt?
Meine Idee wäre, alle von Kunden bestellten Projekte zu holen und den Rest der Arbeit in zwei verschachtelten foreach-Schleifen zu erledigen, aber das scheint der Eleganz zu trotzen, die beabsichtigt war, als LINQ entworfen wurde. Gibt es bessere Möglichkeiten?
Danke für den Hinweis. Mir war eigentlich der Join-Operator bekannt, aber ich wusste nicht, dass es in diesem Fall zutrifft. Ich dachte nicht, dass Join tatsächlich zu GroupJoin führt. –