Tad*_*rić 1 c# linq linq-to-sql
如何检查使用 Linq to sql 创建的组中的任何项目的条件是否为真?
假设我们有 3 个表:Invoice,Order和OrderItem。
我想知道发票上所有订单的总数,以及发票上订单中的任何订单项目是否有折扣。
from o in db.Orders
group o by new
{
InvoiceId = o.InvoiceId,
LocationId = o.LocationId,
} into g
select new
{
InvoiceId = g.Key.InvoiceId,
LocationId = g.Key.LocationId,
Total = g.Sum(x => x.Total).
HasDiscount = <???>
}
Run Code Online (Sandbox Code Playgroud)
我尝试过,let discountedItems = o.OrderItems.Where(i.Discount != 0)但我不知道如何引用正确的 OrderItems。
编辑:
Order Properties: Id, InvoiceId, LocationId, Total
OrderItem Properties: Id, OrderId, Discount- 假设折扣是一个整数值
建议的答案HasDiscount = g.Any(x => x.OrderItem.Select(oi => oi.Discount != 0).FirstOrDefault())可能是这样,但我担心性能,因为我在 Orders 表中有 30 万个项目,在 OrderItem 中有超过 100 万个项目。这不会对每个组进行查询并实现他们的订单项目吗?
对于表格的描述不佳,我深表歉意,请理解它们只是示例,我的真实案例更复杂。
您可以使用Any:-
HasDiscount = g.Any(x => x.HasDiscount)
Run Code Online (Sandbox Code Playgroud)
假设您HasDiscount的模型中有布尔属性。