在行文本框中显示最大值

时间:2019-04-09 07:26:27

标签: vb.net

假设我有一个具有以下值的文本框:

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

2 个答案:

答案 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)