c# - 在 C# 中查找列表列表中第 N 个元素的最大值

标签 c# linq max nested-lists

我有一个 C# 列表,其中每个子列表都有三个 double ,代表一个 3D 点:

{{x1, y1, z1},
 {x2, y2, z2},
 {x3, y3, z3}}

我想找到该数据集的 3D 边界框,这意味着找到最小 X、最大 X、最小 Y、最大 Y 等。

使用 Python/Numpy,我可以使用 zmax = list_of_lists[:,2].max() 等来获得它。

在 C# 中是否有一种优雅的方法可以做到这一点?我怀疑 Linq 是可行的方法,但我还不明白它是如何工作的(如果某个答案包括 Linq,请解释它是如何工作的,请:o)

最佳答案

像这样创建列表,如果您需要更多功能,可以使用 3D 点的特定类而不是元组。

var points = new[] {
    Tuple.Create(x1, y1, z1),
    Tuple.Create(x2, y3, z2),
    Tuple.Create(x3, y3, z3)
};

然后,就像@dasblinkenlight所写的那样,您可以使用linq来选择Max()Min():

var maxX = points.Select(pt => pt.Item1).Max();

或者更短:

var maxX = points.Max(pt => pt.Item1);

编辑:一个易于使用的简单类:

class Point3D {
    public double X { get; set; }
    public double Y { get; set; }
    public double Z { get; set; }

    public Point3D(double x, double y, double z) {
        this.X = x;
        this.Y = y;
        this.Z = z;
    }
}

var points = new[] {
    new Point3D(x1, y1, z1),
    new Point3D(x2, y3, z2),
    new Point3D(x3, y3, z3)
};

var maxX = points.Max(pt => pt.X);

关于c# - 在 C# 中查找列表列表中第 N 个元素的最大值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15789403/

相关文章:

c# - 为 n 个关键字和 AND/OR 选项实现 Linq 搜索查询

c# - C#-添加到字符串[]成员

python - Python中如何添加对应列名最大的列?

c# - 使用 DelegatingHandler 配置 Swashbuckle 作为消息调度程序

c# - 上限双两位数点后

c# - 将 aspx 转换为 pdf

c# - Linq Left Join where right is null

c# - 如何在某些情况下从数据表中选择全部?

java - 超越 Java 中的 Integer.MAX_VALUE 约束

r - 使用 Dplyr 查找组的最大值并在同一表的另一列中改变结果