2010-07-08 56 views
1

有没有在实体框架4中使用Contains方法和对象的实际ID的方法?实体框架包含方法和对象

把这些实体为例:

public class Order 
{ 
    public int OrderId { get; set; }    // PK 
    public string CustomerId { get; set; }  // FK to Customer 
} 

public class OrderItem 
{ 
    public int OrderId { get; set; }    // PK 
    public int ItemId { get; set; }    // PK, FK to Item 
} 

public class Item 
{ 
    public int ItemId { get; set; }    // PK 
    public string ItemName { get; set; } 
} 

,我想返回在他们的项目“5”的所有订单的列表。

我希望能够做到:

List<Order> orders = db.Orders.Where(m => m.OrderItems.Contains(5)).ToList() 

但是,这不会起作用,因为包含需要一个实际的OrderItem的对象。

感谢

回答

5
var orders = db.Orders.Where(m => m.OrderItems.Any(i => i.OrderId == 5)).ToList(); 
+0

就这么简单。非常感谢 – 2010-07-08 13:33:10

3

试试这个:

List<Order> orders = db.Orders.Where(m => m.OrderItems.Any(i=>i.OrderId==5)).ToList() 

OR

List<Order> orders = db.OrderItems.Where(m => m.OrderId==5).Orders.ToList() 
+0

'Contains'不走的表达。 – 2010-07-08 12:39:53

+0

@Craig - + 1.谢谢,我认为它是支持的。更正了答案。 – Krunal 2010-07-08 12:48:11