C# 将数据放入嵌套对象的LINQ查询
我正在编写一个C#LINQ查询,以从下面的SQL表中获取数据 表1C# 将数据放入嵌套对象的LINQ查询,c#,linq,C#,Linq,我正在编写一个C#LINQ查询,以从下面的SQL表中获取数据 表1 Id Status SubStatus 1 Review Pending 2 Review Complete 3 Review Approved 4 Review Denied 5 Info Processing 6 Info Pending 7 Info Requested 8 Info Received 9 Approval Approved 10 Review Approved
Id Status SubStatus
1 Review Pending
2 Review Complete
3 Review Approved
4 Review Denied
5 Info Processing
6 Info Pending
7 Info Requested
8 Info Received
9 Approval Approved
10 Review Approved
从上表中,我想把数据放在一个如下的对象中
public class LastStatusDto
{
public string StatusName { get; set; }
public int StatusId { get; set; }
public int Count { get; set; }
public IEnumerable<LastStatusChildDataDto> drillDownData { get; set; }
}
public class LastStatusChildDataDto
{
public string SubStatusName { get; set; }
public int Count { get; set; }
}
为上述场景编写LINQ查询的好方法是什么。我尝试按状态进行分组,但无法找到将子状态放入嵌套对象的方法,如下所示
{
"statusName": "Review",
"statusId": 0,
"count": 5,
"drillDownData":
[{
"subStatusName":"Approved",
"count":2
},
{
"subStatusName":"Complete",
"count":1
},
{
"subStatusName":"Pending",
"count":1
},
{
"subStatusName":"Denied",
"count":1
},
]
}
var res = from status in context.Table1
group status by status.Status into s
select new LastStatusDto
{
Count = s.Count(),
StatusName = s.Key,
drilldownData = {/* ? */}
};
这应该做到:
var res = table1.GroupBy(t => t.Status)
.Select(g => new LastStatusDto()
{
StatusId = 0,
StatusName = g.Key,
Count = g.Count(),
drillDownData = g.GroupBy(s => s.SubStatus)
.Select(st => new LastStatusChildDataDto()
{
SubStatusName = st.Key,
Count = st.Count()
})
});
正如我在上面的评论中提到的,StatusId
作为LastStatusDto
的属性没有位置,因为它是一个聚合,所以我将其设置为0
,只是为了匹配您的结构。如果它是一个聚合,为什么StatusId
是LastStatusDto
的属性?很有意义!谢谢