假设我有一个具有以下值的文本框:
Lines1 - 180
Lines2 - 190
Lines 3- 200
Lines 4- 220
Lines 5- 230
Lines 6- 260
Lines 7 - 280
Lines 8 - 144
Lines 9 - 125
Lines 10 -160
如何显示最大值所在的行? (例如,如果我的文本框包含250位数字和一些行,我想在另一个文本框中显示最大值所在的行。
如何为文本框中的前5
个最高值或10
个最高值执行此操作?显示行值。
示例:最高值为Line 7 - with value 280.
输出:Textbox1.text-第一行0-不存在。 (仅空格)
8
10
13
13
14
17
10
11
14
15
答案 0 :(得分:1)
您可以使用LINQ做到这一点:
Public Function GetMax() As String
Dim oDirtyLines As List(Of String)
Dim sMaxLine As String
Dim iIndex As Integer
oDirtyLines = Split(TextBox1.Text, vbCrLf).ToList
Dim oCleanLines = oDirtyLines.Select(Function(Line)
Return New With {
.Line = Split(Line, "-").First,
.Value = Split(Line, "-").Last,
.Index = oDirtyLines.IndexOf(Line)
}
End Function)
iIndex = oCleanLines.OrderBy(Function(Line) Line.Value.Trim).Last.Index
sMaxLine = oDirtyLines(iIndex)
Return sMaxLine
End Function
答案 1 :(得分:-1)
已更新
Dim myList = TextBox1.Lines.ToList
Dim removedEmptyLinesCount = myList.RemoveAll(Function(str) String.IsNullOrWhiteSpace(str))
Dim maxValue = myList.Select(Function(line)
Dim res = 0
Integer.TryParse(line, res)
Return res
End Function).Min() ' or Max()
Dim lineIndex = myList.IndexOf(maxValue) + removedEmptyLinesCount
此代码考虑您的文本框是否包含任何非整数值,因此如果输入如下所示:
150
60
xx
300
20
yy
45
结果应为:
maxValue = 300
lineIndex = 3 (Zero-based index)