[英]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.