我有两个具有一对多关系的表。
一个订单有很多产品。
我想列出一个订单列表,每个订单都有免费产品(每个订单一个)。
我试过这样的事情:
this.ObjectContext.ORDERS.Include("PRODUCTS").Where(e=>e.PRODUCTS.price == 0).OrderBy(e => e.Order);
但这不起作用。
还有其他方法吗??
提前致谢。
我有两个具有一对多关系的表。
一个订单有很多产品。
我想列出一个订单列表,每个订单都有免费产品(每个订单一个)。
我试过这样的事情:
this.ObjectContext.ORDERS.Include("PRODUCTS").Where(e=>e.PRODUCTS.price == 0).OrderBy(e => e.Order);
但这不起作用。
还有其他方法吗??
提前致谢。
如果PRODUCTS
是一个集合,您可以使用Any()
扩展方法来查找任何产品是否免费(或者,All()
查找所有产品是否免费的方法):
this.ObjectContext.ORDERS
.Include("PRODUCTS")
.Where(o => o.PRODUCTS.Any(p => p.price == 0))
.OrderBy(e => e.Order);
根据您对所需输出的澄清(所有带有可选免费产品的订单),您可以使用以下查询:
this.ObjectContext.ORDERS
.Include("PRODUCTS")
.Select(o => new {
Order = o,
FreeProduct = o.PRODUCTS.FirstOrDefault(p => p.price == 0)
});
它将返回包含订单和免费产品的异常类型的序列(如果不存在免费产品,则返回 null)。