2016-09-19 2 views
0

목록에서 고유 값을 찾고 각 값이 원래 목록에서 발생한 횟수를 찾아야합니다. 여기에 내가 지금까지 가지고있는 것입니다 :목록의 각 고유 값 계산

Dim Lister As New List(Of String)() 

For Each item In eColumn 
    Lister.Add(item.value) 
Next 

Dim Result As New List(Of String) 
Result = Lister.Distinct().ToList 

For Each st In Result 
    MsgBox(st) 
Next 

결과는 모든 고유 값 목록이지만 각 항목에 대한 개수는 포함되지 않습니다. 요한은 = 2, 수도원 = 1, 래리 = 3, 찰스 = 1 LINQ의 .Distinct를 (사용

+0

[그것은 않습니다] (HTTPS : //msdn.microsoft.com/en-us/library/27b47ht3(v=vs.110).aspx). – GSerg

+0

@GSerg 설명해주십시오. – Chrisetiquette

+1

Excel과 어떤 관련이 있습니까? –

답변

1

가)에만 것입니다 예를 들어, 내 목록 내가 4 개 값을 반환 할

John 
John 
Abbey 
Larry 
Larry 
Larry 
Charles 

경우였다 목록에 각기 다른 이름이 들어있는 목록을 제공하십시오. 그래서 messagebox 루프가 돌아 왔을 때 보았을 때와 마찬가지로 목록에있는 각 이름이 한 번 표시됩니다.

VB 목록에는 항목의 항목 개수를 반환하는 네이티브 함수가 없으므로 linq의 .GroupBy() 함수를 사용하여 그룹화하면 원하는 결과를 얻을 수 있습니다. 그것은을 통해 반복 할 수있는 Linq.GroupedEnumerable 객체를 반환하고 또한 당신이 찾고있는 Count 속성의 종류를 보유합니다

Dim myList As New List(Of String) From {"John", "John", "Abbey", "Larry", "Larry", "Larry", "Charles"} 

    Dim groupedNames = myList.GroupBy(Function(x) x) 
    If groupedNames IsNot Nothing AndAlso groupedNames.Count > 0 Then 
     For Each person In groupedNames 
      Debug.Print(person.Key & "-" & person.Count.ToString) 
     Next 
    End If 

출력 :

John-2 
Abbey-1 
Larry-3 
Charles-1 
+0

OP가 어디에 문제가 있는지 설명해 주시겠습니까? 왜 코드가 작동하지 않는지 설명하지 않는 솔루션 게시는 도움이되지 않습니다 ... – Codexer