#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