0
    select *
From Item i inner join Order o on i.OrderId = o.Id
        left join OrderDealersByDistance d on o.Id = d.OrderId
        left join SubOrder s on i.SubOrderId = s.Id
where d.[Status] = 1

上記のクエリをエンティティ フレームワークで書きたいと思います。私は DataContext と拡張メソッドを好みます。上記のクエリをどのように記述できますか?

4

1 に答える 1

0

まず、はるかに読みやすいクエリ構文を使用します。

こんな感じになります

var db = new MyDbContext(conStr);

var query = from i in db.Items
     from o in db.Orders.Where(o => o.Id == i.OrderId)
     from d in db.OrderDealersByDistance.Where(d => d.OrderId == o.Id).DefaultIfEmpty()
     from s in db.SubOrders.Where(s => i.SubOrderId == s.Id).DefaultIfEmpty()
     where d.Status == 1
     select new { Item = i, Order = o, c.ContractName, Distance = d, SubOrder = s };

var result = query.ToList();

このDefaultIfEmpty()メソッドは、左結合を提供します。選択リスト(「*」ではなく名前付きの列)についてより具体的にしたい場合があります。

于 2013-03-07T18:07:36.783 に答える