如何从此示例中获取最小值ad max值
Public Class RowsFound
Property RowIndex As integer
Property Qty As Integer
Property LineValue As Double
End Class
Dim Test as new List(Of RowsFound)
上面的
根据Min LineValue的最大LineValue和RowIndex获取RowIndex的最佳方法是什么
我已将此作为测试,但我想看看是否有更好的方法。
Dim MaxRow As Integer = 0
Dim MaxRowValue As Integer = 0
Dim MinRow As Integer = 999999
Dim MinRowValue As Integer = 999999
For Each MinMaxitem As RowsFound In ListOfRows
If MinMaxitem.LineValue < MinRowValue Then
MinRow = MinMaxitem.RowIndex
MinRowValue = MinMaxitem.LineValue
End If
If MinMaxitem.LineValue > MaxRowValue Then
MaxRow = MinMaxitem.RowIndex
MaxRowValue = MinMaxitem.LineValue
End If
Next
谢谢:)
答案 0 :(得分:2)
您可以使用Lambda表达式:
首先使用LineValue
和Max()
Min()
的最大\最小值
使用FindIndex()
Private Function getMaxValueIndex() As Integer
Dim maxValue As Integer = Test.Max(Function(t) t.LineValue)
Dim maxValueIndex As Integer = Test.FindIndex(Function(t) t.LineValue = maxValue)
Return maxValueIndex
End Function
Private Function getMinValueIndex() As Integer
Dim minValue As Integer = Test.Min(Function(t) t.LineValue)
Dim minValueIndex As Integer = Test.FindIndex(Function(t) t.LineValue = minValue)
Return minValueIndex
End Function
答案 1 :(得分:0)
一种简单的方法是使用LINQ:
Public Class RowsFound
Property RowIndex As Integer
Property Qty As Integer
Property LineValue As Double
Public Sub New(i As Integer, q As Integer, v As Double)
Me.RowIndex = i
Me.Qty = q
Me.LineValue = v
End Sub
End Class
Dim Test As New List(Of RowsFound) From {New RowsFound(0, 1, 105.25), New RowsFound(1, 2, 100), New RowsFound(2, 1, 110), New RowsFound(3, 2, 60.25)}
Dim RowIndexMax As Integer = (From row As RowsFound In Test.OrderByDescending(Function(x) x.LineValue) Select row.RowIndex).First
Dim RowindexMin As Integer = (From row As RowsFound In Test.OrderBy(Function(x) x.LineValue) Select row.RowIndex).First