Поиск / объединение с LINQ-to-Entities в C # - PullRequest
0 голосов
/ 25 мая 2011

У меня есть база данных с двумя таблицами: заказ и продукт.Эта база данных предоставляется через Entity Data Model и LINQ-to-Entities.

У меня есть ID продукта, и я хочу получить все объекты Order, которые ссылаются на Product.Я хотел бы узнать, как это сделать с помощью LINQ.Я знаю, что могу запросить продукты

int productID = GetProductID();
using (DatabaseContext database = new DatabaseContext())
{
  var products = from product in database.Products
               where product.ProductID = productID
               select product;

}

Я знаю, что этот запрос LINQ дает мне все продукты с определенным идентификатором продукта.Тем не менее, я хочу объекты заказа.Я пытался выяснить, как сделать Join и получить только объекты Order.Я не забочусь о продуктах, так как у меня есть идентификатор продукта.Есть ли способ сделать это?

Спасибо!

Ответы [ 4 ]

1 голос
/ 25 мая 2011

Обычно Order имеет отношение к продуктам, что позволяет написать:

var orders = from order in database.Orders
             where order.Products.Any(p => p.ProductID == productID)
             select order;
1 голос
/ 25 мая 2011
 var orders = from product in database.Products
            join order in database.Orders on product.Key equals order.KeyField 
           where product.ProductID == productID
           select order;
0 голосов
/ 25 мая 2011

Что-то вроде (в зависимости от имеющихся у вас свойств):

context.Orders.Where(order => order.ProductId == myProduct.Id);
0 голосов
/ 25 мая 2011

Обычно это делается следующим образом:

Ради простоты: [TABLE] <key/relation>

[Products]-<productId>-[OrderedProducts]-<orderId>-[Orders]

var result = 
from op in OrderedProducts
join o in Orders on op.OrderId equals o.Id
join p in Products on op.ProductId equals p.Id
select p
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...