需要帮助才能在linq中实现这一目标。
我有3张桌子。
客户
CustumerOrder
订单明细
我需要在一个查询中列出所有客户(仅当他们已经下了至少一个订单时),并且只有当订单价值超过100时,每个客户的所有订单才会列出。
此致
苛刻
答案 0 :(得分:0)
这是基于某些假设的猜测:
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
}
答案 1 :(得分: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的订单的客户,请使用 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
}
您可以以类似的方式添加更多条件。