C# 如何对从SQL Server从LINQ查询返回的相同结果集的结果进行分组和联接?
我有以下数据结构 在客户报告中,有来自不同客户的多个订单,每个订单有一对多个项目。当我执行存储过程时,数据 它在结果集中返回的结果具有上述结构注意:查询中存在重复项,因为一个订单有许多项。有一个专栏 称为ReportSequence这是记录在报告上的出现顺序C# 如何对从SQL Server从LINQ查询返回的相同结果集的结果进行分组和联接?,c#,linq,C#,Linq,我有以下数据结构 在客户报告中,有来自不同客户的多个订单,每个订单有一对多个项目。当我执行存储过程时,数据 它在结果集中返回的结果具有上述结构注意:查询中存在重复项,因为一个订单有许多项。有一个专栏 称为ReportSequence这是记录在报告上的出现顺序 public class CustomerReport { public int CustomerId { get; set; } //maps to the CustomerId column in SQL Query r
public class CustomerReport
{
public int CustomerId { get; set; } //maps to the CustomerId column in SQL Query result
public string FirstName { get; set; } //maps to the FName column
public string LastName { get; set; } //maps to the LName column
public DateTime? ReportDate { get; set; } //Generated at object creation
public List<SaleOrder> SalesOrders { get; set; } //see SaleOrder class
public CustomerReport()
{
SalesOrders = new List<SaleOrder>();
}
}
使用查询执行show on Excel屏幕截图返回的结果,我需要生成以下JSON结构:
{
"CustomerId" : "10001",
"FirstName" : "Nicholas",
"LastName" : "Cage",
"ReportDate" : "toays date",
SalesOrders: [
{
SaleOrderId : 6 ,
SaleOrderNumber : "EB100X100" ,
SaleOrderTypeId : 102,
ReportSequenceNo : 1,
SalesOrderItems : [
{ ItemTypeId : NULL, ItemId : NULL, ItemName : Null }
]
},
...
]
}
我采用的方法是:
首先,我尝试从一组数据中构建两组数据
原始结果集按SalesOrderId分组
上述内容与原文结合在一起
但是加入失败了。。。不能加入他们
如何使用上面的结果集和类从Linq构建这个JSON结构?好吧,这里需要的是对源数据进行适当的分组
allRecords.GroupBy(a=>a.CustomerId).Select(b=> new CustomerReport(b.Key){
SalesOrders = b.Values.GroupBy(c=>c.SaleOrderId).Select(d=> new SaleOrder(d.Key).........)}
它不完整,但我希望能给你一个提示…现在我真的迷路了…你传递给CustomerReport的b键是什么?x可能应该是b?事实上应该是b,我调整了代码段Excel电子表格不是LINQ的结果-你能显示实际的LINQ查询/结果吗?
{
"CustomerId" : "10001",
"FirstName" : "Nicholas",
"LastName" : "Cage",
"ReportDate" : "toays date",
SalesOrders: [
{
SaleOrderId : 6 ,
SaleOrderNumber : "EB100X100" ,
SaleOrderTypeId : 102,
ReportSequenceNo : 1,
SalesOrderItems : [
{ ItemTypeId : NULL, ItemId : NULL, ItemName : Null }
]
},
...
]
}
allRecords.GroupBy(a=>a.CustomerId).Select(b=> new CustomerReport(b.Key){
SalesOrders = b.Values.GroupBy(c=>c.SaleOrderId).Select(d=> new SaleOrder(d.Key).........)}