查找/加入C#中的LINQ到实体

时间:2011-05-25 19:38:05

标签: c# linq-to-entities

我有一个包含两个表的数据库:Order和Product。该数据库通过实体数据模型和LINQ到实体公开。

我有一个产品ID,我希望得到所有引用该产品的Order对象。我想学习如何使用LINQ。我知道我可以查询产品

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

}

我知道这个LINQ查询可以获得具有特定产品ID的所有产品。但是,我想要Order对象。我试图找出一个Join并获得Order对象。我不关心产品,因为我有产品ID。有没有办法做到这一点?

谢谢!

4 个答案:

答案 0 :(得分:1)

 var orders = from product in database.Products
            join order in database.Orders on product.Key equals order.KeyField 
           where product.ProductID == productID
           select order;

答案 1 :(得分:1)

通常Order与产品有关系,允许您写:

var orders = from order in database.Orders
             where order.Products.Any(p => p.ProductID == productID)
             select order;

答案 2 :(得分:0)

通常情况下,这样做:

为简单起见:[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

答案 3 :(得分:0)

类似的东西(取决于你拥有的属性):

context.Orders.Where(order => order.ProductId == myProduct.Id);