わかりました。Order と OrderLine という 2 つのテーブルがあり、何らかの理由でデータベースに外部キー関係がないとします (これは例であり、一緒に住んでいます)。ここで、Entity Framework を使用してこれら 2 つのテーブルを結合し、次のようなものを作成します。
using (var model = new Model())
{
var orders = from order in model.Order
join orderline in model.OrderLine on order.Id equals orderline.OrderId into orderlines
from ol in orderlines.DefaultIfEmpty()
select new {order = order, orderlines = orderlines};
}
さて、上記はオーダーとオーダーライン、左結合などを生成しますが、多くの問題があります:
- 単純に醜いです
- 匿名型を返します
- 同じ注文の複数のインスタンスを返します。orders.Distinct() が失敗するため、クライアント側で Distinct() を実行する必要があります。
私が探しているのは、次のようなソリューションです。
- かわいい
- 匿名型ではなく、静的によく知られている型を返します (クエリ結果を投影しようとしましたが、OrderLines で問題が発生しました)
- サーバー側で Distinct を実行
誰?