在C#中连接多个ICollections以从其他类中检索数据

时间:2015-04-17 20:28:54

标签: c# asp.net linq entity-framework inner-join

我的数据库关系如下:

enter image description here

在C#中,当有人将产品添加到购物车时,我会创建新订单。我的问题是我需要在gridview中添加到购物车的产品数据,如类别名称,产品长度等。订单类包含OrderDetails的Icollection,我试图从那些中检索数据订购我存储产品ID的详细信息。所以这里的问题是,我有什么方法可以在这里进行多个连接,这样当用户将产品添加到购物车时,我可以从表(C#中的类)产品,产品类别和类别中检索所需的所有数据,这样他就可以看看他放在购物车里的东西。

我试图通过以下方式访问其他表:

Orders.OrderDetails.ElementAT(0).Product.ProductCategories.ElementAt(0)...

但这并没有把我带到任何地方......有没有人理解我在这里想要达到的目标?

如果有人可以帮我解决这个问题或者指出我正确的方向我该怎么做?

1 个答案:

答案 0 :(得分:1)

通常,创建一个类来表示您希望显示的数据,然后使用LINQ来创建与该结构匹配的数据的投影,通常是明智的,例如:

from o in context.Orders
from p in o.Products
select new CartGridItem
{
    Product = p,
    CategoryNames = p.Categories.Select(c => c.Name),
}