ネストされたオブジェクトのリストを取得しているLINQクエリがあります。このLINQクエリを書き直して、1つのSQLクエリのみを実行する方法はありますか?
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()
}
}
残念ながら、このLINQクエリはnum(クライアント)+1のSQLクエリになります。 1つのSQLクエリでしか結果が得られないように、これを書き換えるエレガントな方法はありますか?
私の考えは、クライアントから注文されたすべてのプロジェクトをフェッチし、2つのネストされたforeachループで残りの作業を行うことですが、それはLINQの設計時に意図された優雅さに反しているようです。より良い選択肢はありますか?
ヒントをありがとう。私は実際に結合演算子を認識していましたが、このケースではそれが当てはまるとは思いませんでした。実際にJoinがGroupJoinになったとは思っていませんでした。 –