【发布时间】:2020-09-28 11:24:35
【问题描述】:
我必须上课,一类是产品类,另一类是跟踪订单。两者都存储在数据库中,我使用 ef core 作为 orm。
public class Product
{
public int Id { get; set; }
public int AvailableQuantity { get; set; }
public ICollection<Order> Orders { get; set; }
}
public class Order
{
public int Id { get; set; }
public bool Confirmed { get; set; }
public int Quantity { get; set; }
public int ProductId { get; set; }
public Product Product { get; set; }
}
现在我需要获取所有 Order.Quantity 的总和小于 Product.AvailableQuantity 且 Order.Confirmed 属性为 true 的产品。
我已经试过了
_context.Products.Where(product => product.Orders.Where(order => order.Confirmed).Sum(order => order.Quantity) < product.AvailableQuantity)
但这显然不起作用。我猜我需要GroupBy 的东西,但我不知道如何让这个查询工作。
另外我不想使用AsEnumerable 并在内存中执行查询,因为我的数据库很大。
【问题讨论】:
-
不工作是什么意思?
-
我得到一个
System.InvalidOperationException方法只能在 Type.IsGenericParameter 为 true 的类型上调用。在 System.RuntimeType.get_DeclaringMethod() -
你可以试试用
select代替where
标签: c# linq entity-framework-core linq-to-entities