将子列表分组为单个父对象-AdventureWorks查询-Lambda表达式

时间:2019-03-23 16:36:54

标签: c# linq group-by

我正在使用AdventureWorks数据库,并且正在使用以下查询:

 SELECT c.CustomerID, c.AccountNumber, soh.SalesOrderID, soh.SalesOrderNumber, sod.UnitPrice, sod.ProductID, p.Name
FROM Sales.SalesOrderHeader soh
inner join sales.SalesOrderDetail sod on soh.SalesOrderID = sod.SalesOrderID
inner join sales.Customer c on c.CustomerID = soh.CustomerID
inner join Production.Product p on p.ProductID = sod.ProductID

我已经有代码可以像这样回来填充数据: enter image description here

基于此,我想将子列表对象合并为一个父对象,如果有意义的话,最终采用一对多结构。

截至目前,我希望使用 lambda表达式进行此操作。我尝试了以下代码,但是我不想在组中指定-> o.CustomerID,o.AccountNumber ,因为我必须指定我的Customer类的所有属性如代码中所示,可以访问最终选择。

                        .GroupBy(o => new { o.CustomerID, o.AccountNumber }).Select(group => new Customer2
                     {
                         CustomerID = group.Key.CustomerID,
                         AccountNumber = group.Key.AccountNumber,
                         Orders = group.SelectMany(x => x.Orders).ToList()
                     }).ToList();

我希望每个客户的最终结果看起来像这样: enter image description here

我希望这是有道理的,并预先感谢您的帮助。

0 个答案:

没有答案