注文ヘッダーと詳細テーブルがあり、すべてのヘッダー列を取得して、詳細から合計注文数量を追加します。
私がやろうとしていること(pseudo-sql):
select Header.*, sum(Details.Quantity)
from Header
join Details on Details.HeaderID = Header.ID
group by HeaderID
すべてのヘッダー列(たくさんあります)を書き直さないようにするために、次のような新しいオブジェクトを作成しました。
public class OrderView
{
public Header Header { get; set; }
public int? TotalQuantity { get; set; }
}
そしてそれを埋めるための私の悲しい試み:
var results = from oh in db.Header
join od in db.Details on oh.ID equals od.HeaderID
where oh.Store == params.Store
// && ... a bunch more search filters on Header ...
group od by od.PID into odg
select new OrderView() { Header = oh, TotalQuantity = odg.Sum(x => x.QTY) };
私の現在の試みの最初の問題は、select
行にoh
が定義されていないことです。これは、LINQを知らないため、ヘッダーからのすべての結果が別の場所に送信されたと私に信じさせます。
このタイプのクエリのベストプラクティスが検索に表示されない場合は、このクエリ全体を破棄して別の方法で実行しても問題ありません。