C#のLinqクエリが必要-1対多のテーブル関係、1対多のレコードが必要

c# linq
C#のLinqクエリが必要-1対多のテーブル関係、1対多のレコードが必要

linqでこれを達成するには助けが必要です。

私は3つのテーブルを持っています。

  1. お客様

  2. CustumerOrder

  3. 注文詳細

注文額が100を超える場合にのみ、すべての顧客(少なくとも1つの注文を行った場合のみ)と各顧客のすべての注文を1つのクエリにリストする必要があります。

よろしく、

厳しい

  0  1


ベストアンサー

以下は、いくつかの仮定に基づいた推測です。

var result =
    from customer in Customers.Where(a => a.CustomerOrder.Count > 0)
    from order in CustomerOrder.Where(a => a.OrderDetails.Sum(b => b.Price) > 100)
    select new
    {
        customer,
        order.OrderDetails
    }

0


私はあなたがこのようなものが欲しいと言います:

from c in Customers
where c.CustomerOrders.Any()
select new
{
  customer,
  Orders =
    from co in c.CustomerOrders
    where co.TotalPrice > 100
    select co.OrderDetails
}

または、CustomerOrderテーブルに「TotalPrice」列がない場合は、内部クエリを次のように置き換えます。

Orders =
  from cp in c.CustomerOrders
  where co.OrderDetails.Sum (od => od.Price) > 100
  select co.OrderDetails

編集:OrderTotalPriceが100を超える注文を1つ以上持つ顧客のみを含める場合は、* let *ステートメントを使用します。

from c in Customers
let highValueOrders =
    from co in c.CustomerOrders
    where co.TotalPrice > 100
    select co.OrderDetails
where highValueOrders.Any()
select new
{
  customer,
  highValueOrders
}

同様の方法で条件を追加できます。

0


タイトルとURLをコピーしました