拥有一个对象,该对象具有作为其几何边界的 double[6]
数组属性:
"xmin: " << bounds[0]
"xmax: " << bounds[1]
"ymin: " << bounds[2]
"ymax: " << bounds[3]
"zmin: " << bounds[4]
"zmax: " << bounds[5]
同时迭代多个对象并获取此属性 我想存储所有迭代对象的xmax,ymax,zmax的最大值
完成这项任务的最佳方法是什么,我有这个想法,但是我想使用 Linq
double[] max = new double[6];
double xmax = 0.0;
double ymax = 0.0;
double zmax = 0.0;
foreach (var o in myObject)
{
max = o.bounds;
if (xmax < max[1])
{
xmax = max[1];
}
if (ymax < max[3])
{
ymax = max[3];
}
if (zmax < max[5])
{
zmax = max[5];
}
}
最佳答案
您可以使用 Enumerable.Max
来做到这一点方法:
double xmax = myObject.Select(x => x.bounds[1]).Max();
double ymax = myObject.Select(x => x.bounds[3]).Max();
double zmax = myObject.Select(x => x.bounds[5]).Max();
请注意,此解决方案不必要地枚举了集合三次。您的 foreach
循环仅枚举了一次集合,如果我是您,我会继续使用简单循环并使用 LINQ
仅在有帮助时。当然,决定权在你。如果你的收藏不是特别庞大,你可以更喜欢更具可读性的方法。
关于c# - 获得最多数组的Linq解决方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23529714/