2016-01-14 3 views
1

я следующие данные, возвращаемые из веб-службы и сериализованная в список:Как считать и группу с помощью vb.net

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 - это путь. Может ли кто-нибудь указать мне в правильном направлении?

Спасибо!

ответ

1

Вы можете использовать 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() 
+0

Спасибо! .. сделал! – EriqaBana

+0

Добро пожаловать :) –

Смежные вопросы