2010-07-08 3 views
1

Есть ли способ использования метода Contains в Entity Framework 4 с фактическим идентификатором объекта?Entity Framework Содержит метод и объекты

Возьмите эти объекты в качестве примера:

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

Простой. Огромное спасибо –

3

Попробуйте это:

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

ИЛИ

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

'Contains' не принимает выражение. –

+0

@Craig - + 1. Спасибо, я думал, что это поддерживается. Исправленный ответ. – Krunal

Смежные вопросы