繁体   English   中英

如何使用vb.net进行计数和分组

[英]How to count and group using vb.net

我从Web服务返回了以下数据并将其序列化为列表:

Name             Severity      Type     
John Doe         Warning       A        
John Doe         Error         A 
John Doe         Error         A 
John Doe         Error         A      
Jane West        Error         B        
Mike Smith       Warning       B        
Jack Black       Warning       A        

在vb.net中,我想将其总结为以下内容:

Name       TypeAWarning    TypeAError  TypeBWarning   TypeBError
John Doe        1              3                          
Jane West                                                1
Mike Smith                                 1
Jack Black      1

使用linq,如何收集并汇总该集合? 我尝试了类似的东西:

 Dim data As New List(Of TempData)

data.add(new TempData ({TypeAWarning = from d in data Group d By Name = a.Severity into Group??

我只是不确定linq是否是要走的路。 有人可以指出我正确的方向吗?

谢谢!

您可以使用GroupBy按“ Name字段对项目进行分组,然后知道每个组都包含键(“ Name字段)和该组的所有项目,则可以使用此查询来调整结果:

Dim Result = Items.GroupBy(Function(item) item.Name) _
                  .Select(Function(group) New TempData() With
                  {
                      .Name = group.Key,
                      .TypeAWarning = group.Where(Function(item) item.Type = "A" And item.Severity = "Warning").Count(),
                      .TypeAError = group.Where(Function(item) item.Type = "A" And item.Severity = "Error").Count(),
                      .TypeBWarning = group.Where(Function(item) item.Type = "B" And item.Severity = "Warning").Count(),
                      .TypeBError = group.Where(Function(item) item.Type = "B" And item.Severity = "Error").Count()
                  }).ToList()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM