从返回有符号值的绝对值中获取最大值

时间:2017-07-03 23:44:31

标签: vb.net search collections max min

假设我有一个班级

Public Class Foo
    Property fooProp1 as Single
    Property fooProp2 as Single
    Property fooProp3 as Single
End Class

Collection(Of Foo)中查找属性的绝对最大值(包含正值或负值)我可以这样做:

Collection.Max(Function(x As foo) Math.Abs(x.fooProp1))

并返回更大的绝对值WITHOUT sign。

问题是如何获取数字WITH符号?

提前致谢。 RG

2 个答案:

答案 0 :(得分:0)

Math.Abs​​将始终返回无符号值(绝对的实际含义)。

获取您只需阅读它所需的属性值。

要获得MAX或MIN,您必须比较值,如下所示:

        dim x as integer = foo.property
        dim y as integer = last_foo_property (or anything else)

        Minimum = Math.Min(x,y)
        Maximum = Math.Max(x,y)

但是,如果试图获取集合的较低和较高值,您可以使用:

      MaxValue = Collection.Find(Collection, Function(Z) (Z > BiggerValue))

      MinValue = Collection.Find(Collection, Function(Z) (Z < LowerValue))

在调用之前获取这些值。

另一种方法是进行SORT并获取第一个和最后一个值......

答案 1 :(得分:0)

Collection.Select(Function(x) a.fooProp1).Aggregate(Function(a, b) 
                                                    If(Math.Abs(a) > Math.Abs(b), a, b))