获取列表中的最小值和最大值

时间:2021-02-17 13:17:24

标签: c# unity3d

我正在使用在我的 SetValues 列表中添加两个变量。变量是位置和值。现在我想在我的列表中检查什么是最大值,什么是最小值(仅适用于“值”)。现在,当我执行以下操作时:

[Serializable]
    public struct SetValues {
        public float Position;
        public float Value;
    }

    public List<SetValues> setValues;

void Start () {
        Debug.Log (setValues.Value.Min ());
    }

它说“不包含'Value'的定义,并且找不到接受第一个类型参数的可访问扩展方法'Value'”。我想使用 List 的唯一原因是避免使用数组时应该进行的迭代。但我在这里做错了什么?

1 个答案:

答案 0 :(得分:2)

您可以随意使用 Linq 命名空间中提供的 IEnumerable 扩展。这只是一行简单的 min 代码和另一行 max

var minV = setValues.Min(x => x.Value);
var maxV = setValues.Max(x => x.Value);

但是,您无法避免对列表进行迭代。 Min 和 Max 扩展包含一个隐藏循环,用于寻找请求的值。

您的代码无法运行,因为 setValuesSetValues 对象的列表。仅仅因为大小写不同的字母就让我们感到困惑,但对于抱怨它的编译器来说,这是一个明显的错误。我建议为类找到一个不同的名称或为列表变量找到一个不同的名称