2017-01-03 64 views
1

我使用LINQ许多查询到一对多的关系LINQ无法从许多不同的价值,许多实体框架

我有这些表/实体:

enter image description here

每个订单有多个产品我想要获得与产品不同的订单。

这里是我的查询:

var query = (from order in db.Order 
      join orderproduct in db.OrderProduct 
         on order.orderId equals orderproduct.OrderId 
      join product in db.Product 
         on orderproduct.ProductId equals product.productId 
      select new 
        { order.orderId, 
         order.name, 
         product.productId, 
         product.productName, 
         product.price 
        }).Distinct().ToList(); 

这是结果:

enter image description here

我想唯一的名字 “简” 用2种产品。结果显示2个记录同名“Jane”。

如何获得一个记录名称“jane”和2个产品?

感谢您的帮助。

+0

为了得到“简”与2级的产品必须通过 –

+0

使用组,你必须按订单ID或名字,我想说的数据。 – MadOX

回答

1

使用以下命令:

var query = (from order in db.Order 
         join orderproduct in db.OrderProduct 
         on order.orderId equals orderproduct.OrderId 
         join product in db.Product 
         on orderproduct.ProductId equals product.productId 
         select new {order.orderId,order.name,product.productId,product.productName,product.price}).GroupBy(order=>order.orderId).ToList(); 
+0

它和我的结果一样。 – Jane2

+1

@timothy他的回答是正确的。一定要复制他的所有代码。 – Floc

0

如果你想返回一个包含客户的姓名和订购产品的结构,我建议组产品深受order.orderName(不order.orderId)和加载结果到词典:

var query = from order in db.Order 
      join orderproduct in db.OrderProduct on order.orderId equals orderproduct.OrderId 
      join product in db.Product on orderproduct.ProductId equals product.productId 
      group product by order.orderName into orderGroup 
      select orderGroup; 

var orderedProductsByName = query.ToDictionary(name => name.Key, products => products.ToList()); 
相关问题