2014-01-24 3 views
1

В основном я пытаюсь извлечь наиболее распространенное значение из списка. В списке будет много разных случайных чисел, и он должен вытащить наиболее распространенный и выделить его. Я не могу понять правильный код, и я пробовал все! Пожалуйста помоги! (Vb.net)Нужна помощь в поиске общих значений

Private Sub Check() 

    If ListBox1.Items.IndexOf("1") > ListBox1.Items.IndexOf("2") Then 

     Label7.Text = "1" 
     ListBox1.SelectedItem = ("1") 
    Else 
     Label7.Text = "2" 
     ListBox1.SelectedItem = ("2") 

    End If 
End Sub 

В приведенном выше примере это должно проверить, для которых значение является наиболее распространенным, 1 или 2. Затем изменить метку и выделить номер в ListBox. Я не могу получить его ...

ответ

1

Вы можете попробовать это:

Dim foundMost As String = ListBox1.Items.Cast(Of String) _ 
             .GroupBy(Function(x) x) _ 
             .OrderByDescending(Function(y) y.Count) _ 
             .First.Key 

Label7.Text = foundMost 
ListBox1.SelectedIndices.Clear() 
For i As Integer = 0 To ListBox1.Items.Count - 1 
    If ListBox1.Items(i) = foundMost Then 
    ListBox1.SelectedIndices.Add(i) 
    End If 
Next 

Оператор LINQ выше происходит через список строк в ListBox и группируя их по их стоимости, то он заказывает их в убывающем как много раз этот элемент появился в списке, затем он захватывает первый элемент в результирующем списке.

+0

спасибо, что это сработало отлично! – user3233937

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