Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将数据放入嵌套对象的LINQ查询_C#_Linq - Fatal编程技术网

C# 将数据放入嵌套对象的LINQ查询

C# 将数据放入嵌套对象的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

我正在编写一个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
从上表中,我想把数据放在一个如下的对象中

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
的属性?很有意义!谢谢