使用LINQ ...
Dim average As Double = y.Average()
你可以使用LINQ做的另一件事是排除某些值來自你的平均值。以此示例將myNumbers()
中的9個項目設置爲10,然後將第10個項目設置爲零。我使用Linq來首先篩選大於零的數字,然後我執行Average
聚合。
Dim myNumbers(9) As Double
For i As Integer = 0 To 8 Step 1
myNumbers(i) = 10
Next i
myNumbers(9) = 0
Dim average As Double = myNumbers.Where(Function(num) num > 0).Average()
'Optionally, you could also do it this way:
Dim average2 As Double = (From num In myNumbers
Where num > 0).Average()
MessageBox.Show(average)
當你使用類時會更好。考慮這個類Thing
:
Public Class Thing
Public Name As String = ""
Public Number As Double = 0
Public Sub New (name As String, number As Double)
Me.Name= name
Me.Number = number
End Sub
End Class
我可以創建一個類的集合和.Where
變得更加強大。在這個例子中,我通過Thing.Name
Dim things As List(Of Thing) = New List(Of Thing)()
things.Add(New Thing("Michael", 10))
things.Add(New Thing("Michael", 5))
things.Add(New Thing("Michael", 7))
things.Add(New Thing("Michael", 9))
things.Add(New Thing("Rian", 10))
things.Add(New Thing("Rian", 10))
things.Add(New Thing("Rian", 10))
Dim AverageMichael As Double = things.Where(Function(thing) thing.Name = "Michael").Average(Function(thing) thing.Number)
Dim AverageRian As Double = things.Where(Function(thing) thing.Name = "Rian").Average(Function(thing) thing.Number)
MessageBox.Show(AverageMichael)
MessageBox.Show(AverageRian)
平均旁註
如果你是一個.NET開發人員,你想學習使用Linq或者你只需要一個簡單的環境,測試.NET代碼,然後我強烈推薦LinqPad。我在本文中使用了LinqPad的所有代碼。
http://www.linqpad.net/
有沒有什麼用? http://www.java2s.com/Code/VB/LINQ/UsingAggregatingAveragetoaarray.htm或https://msdn.microsoft.com/en-us/library/bb546138(v=vs.100).aspx –