【问题标题】:Joining multiple ICollections in C# to retrieve data from other classes在 C# 中加入多个集合以从其他类中检索数据
【发布时间】:2015-04-17 20:28:53
【问题描述】:

我的数据库关系如下:

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

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

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

但这并没有把我带到任何地方......有人明白我在这里想要实现的目标吗?

如果有人可以帮助我解决这个问题或为我指明正确的方向,我该怎么办??

【问题讨论】:

  • 我正在使用 Order.OrderDetails 作为数据源,我认为我无法将查询结果放入该 ICollection 中??
  • 既然你问的是一个 c# 问题,如果你向我们展示你的类的骨架,也许我们可以为你提供更多帮助。它们只是 POCO、实体框架对象还是 ??
  • 它们是实体框架对象...我正在使用 ADO.NET 框架进行 ORM(用于映射我的数据库...)

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


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-02-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-14
    相关资源
    最近更新 更多