2016-09-19 7 views
0

Ich muss die eindeutigen Werte aus einer Liste finden und die Anzahl, wie oft jeder Wert in der ursprünglichen Liste aufgetreten ist. Hier ist, was ich bisher:Zählung jedes eindeutigen Werts in einer Liste

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 

Das Ergebnis ist eine Liste aller Einzelwerte, aber nicht eine Zählung für jedes Element enthalten. Zum Beispiel war, wenn meine Liste

John 
John 
Abbey 
Larry 
Larry 
Larry 
Charles 

Ich möchte vier Werte zurückgegeben: John = 2, Abbey = 1, Larry = 3, Charles = 1.

+0

[Es tut] (https: //msdn.microsoft.com/en-us/library/27b47ht3(v=vs.110).aspx). – GSerg

+0

@GSerg bitte erläutern – Chrisetiquette

+1

Was hat das mit Excel zu tun? –

Antwort

1

Mit Linq der .Distinct() ist nur noch zu geben Sie eine Liste mit jedem eindeutigen Namen in Ihrer Liste; So wie Sie gesehen haben müssen, als Ihre MessageBox-Schleife lief, zeigt es Ihnen einfach jeden Namen, der sich in Ihrer Liste befindet.

VB-Listen haben keine native Funktion, um die Anzahl der Vorkommnisse eines Elements in einer Liste zurückzugeben. Um das gewünschte Ergebnis zu erzielen, gruppieren Sie sie einfach mit der Funktion .GroupBy() von linq. Es wird ein Linq.GroupedEnumerable-Objekt zurück, das durch laufen werden können und besitzt auch die Art der Eigenschaft count Sie suchen:

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 

Ausgang:

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

Können Sie erklären, wo das OP Probleme hat? Das Posten einer Lösung, die nicht erklärt, warum ihr Code nicht funktioniert, ist nicht hilfreich ... – Codexer

Verwandte Themen