2010-07-08 64 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