我有2个表,一个订单和一个产品。订单具有OrderID,OrderName和AccessID,而产品具有ProductID,ProductName和OrderID。这些表有更多字段,但这些与我的问题相关。
所以我想做的是,使用OrderID获取products表中的第一组产品,订单少于8个产品,AccessID为1。
我知道我可以在2个LINQ语句中执行此操作,首先按Orders中的AccessID进行过滤,然后在products表中创建一个循环以获取Count<的第一个实例。 8,但我确信有更好的方法可以做到这一点,可能在1个声明中。
感谢您的帮助和时间
这是我现在提出来的,仍然需要进行测试: -
public Order OrdersLessThanEightItems()
{
IEnumerable<int> orderId = null;
int accessID = 1;
Order order = (from o in db.Orders
where o.AccessID == accessID && o.Products.Count < 8
orderby o.Products.Count ascending
select o).FirstOrDefault();
return order;
}
答案 0 :(得分:1)
预编辑
订单和产品之间的关系不应该是多对多的关系吗?
产品应该有OrderID吗?那么1个产品将只允许1个订单。
发布编辑(突出显示关系为1对多之后)
public class Product
{
//...
public Order InOrder { get; set; }
//...
}
public class Order
{
//...
public virtual ICollection<Product> ProductsInOrder { get; set; }
//...
}
然后你就可以使用它(未经测试):
List<Product> productList = (from o in context.Orders
where o.AccessID == myAccessID && o.ProductsInOrder.Count < 8
orderby o.ProductsInOrder.Count
select o).ToList();