Показать первые 10 самых высоких / меньших значений в текстовом поле моей строки

#vb.net

#vb.net

Вопрос:

Я хотел бы углубить этот код и показать мне 10 самых высоких значений и 10 самых низких значений. как вы думаете, было бы возможно, следуя приведенному мне примеру?

   Dim myList = TxtNumberListCount.Lines.ToList
        Dim removedEmptyLinesCount = myList.RemoveAll(Function(str) String.IsNullOrWhiteSpace(str))
        Dim minValue = myList.Select(Function(line)
                                         Dim res = 0
                                         Integer.TryParse(line, res)
                                         Return res
                                     End Function).Min() ' or Max()
        Dim lineIndex = myList.IndexOf(minValue)   removedEmptyLinesCount
        TxtBoxMinValue1.Text = minValue
        TxtBoxCountMinValue1.Text = lineIndex
        Dim myList1 = TxtNumberListCount.Lines.ToList
        Dim removedEmptyLinesCount1 = myList1.RemoveAll(Function(str) String.IsNullOrWhiteSpace(str))
        Dim maxValue = myList1.Select(Function(line)
                                          Dim res = 0
                                          Integer.TryParse(line, res)
                                          Return res
                                      End Function).Max() ' or Max()
        Dim lineIndex1 = myList1.IndexOf(maxValue)   removedEmptyLinesCount
        TxtBoxMaxValue1.Text = maxValue
        TxtBoxCountMaxValue1.Text = lineIndex1
        TextBox6.Text = TxtNumberListScan.Lines(TxtBoxCountMinValue1.Text)
        TextBox7.Text = TxtNumberListScan.Lines(TxtBoxCountMaxValue1.Text)
  

Ответ №1:

Чтобы получить 10 самых высоких значений:

 Dim Top10HighestValues = myList.Select(Function(line)
                                          Dim res = 0
                                          Integer.TryParse(line, res)
                                          Return res
                                        End Function).OrderByDescending(Function(x) x).Take(10)
  

И чтобы получить 10 самых низких значений, которые вам нужно заменить OrderByDescending на OrderBy :

 Dim Top10LowestValues = myList.Select(Function(line)
                                          Dim res = 0
                                          Integer.TryParse(line, res)
                                          Return res
                                        End Function).OrderBy(Function(x) x).Take(10)
  

Сохранение значений и индексов в словаре:

   Dim dictionary As New Dictionary(Of String, Integer)
  For Each i In Top10HighestValues 
       Dim idx = myList.IndexOf(i)   removedEmptyLinesCount
       dictionary.Add(i, idx)
  Next



 For Each d In Dictionary
        TextBox2.AppendText(d.Key amp; vbCrLf)
        TextBox2.AppendText(d.Value amp; vbCrLf)
 Next
  

Отредактируйте, чтобы получить индексы

Комментарии:

1. Как мне подсчитать строки? найдите строки для всех значений. (LineIndex)

2. Обновлен ответ

3. Не индексы, а в какой строке находится каждое значение. предыдущий код был лучше.

4. вы должны были сохранить предыдущий код, я вижу, вы его удалили.

5. For Each i In Top10HighestValues TextBox2.AppendText(i amp; vbCrLf) Next