首页 > 解决方案 > VB.net查找除0以外的最小数字

问题描述

我有五个值,其中一个或多个值可能为 0。至少有两个值大于 0。

什么是使用 VB.net 找到这些值的最小值并忽略 0 值的最简单和最干净的方法?

编辑:我这么远:

'get smalles value that is not 0
Dim heights As List(Of Double) 
heights.Add(sectionHeight1)
heights.Add(sectionHeight2)
heights.Add(sectionHeight3)
heights.Add(sectionHeight4)
heights.Add(sectionHeight5)
        
For i = 0 To 4 Step 1
    If heights(i) = 0 Then
        heights.RemoveAt(i)
    End If
Next

标签: vb.net

解决方案


这正是 LINQ 最好解决的问题:

Dim minValueIgnoring0 = heights.Where(Function(h) h <> 0).Min()

替代语法:

Dim minValueIgnoring0 = (From h in heights Where h <> 0).Min()

(请注意,您可能需要Imports System.Linq在源文件的顶部添加。)


请注意,LINQ 也可以对数组进行操作,因此您甚至不需要列表:

Dim heights = {sectionHeight1, sectionHeight2, sectionHeight3, sectionHeight4, sectionHeight5}
Dim minValueIgnoring0 = heights.Where(Function(h) h <> 0).Min()

学到更多:


推荐阅读