c# – Linq解决方案,以获得最大数量的数组
发布时间:2020-12-16 02:01:33 所属栏目:百科 来源:网络整理
导读:有一个具有double [6]数组属性的对象作为其几何边界: "xmin: " bounds[0] "xmax: " bounds[1] "ymin: " bounds[2] "ymax: " bounds[3] "zmin: " bounds[4] "zmax: " bounds[5] 迭代几个对象并获取此属性 我想存储所有迭代对象的最大xmax,ymax,zmax值 什么是
有一个具有double [6]数组属性的对象作为其几何边界:
"xmin: " << bounds[0] "xmax: " << bounds[1] "ymin: " << bounds[2] "ymax: " << bounds[3] "zmin: " << bounds[4] "zmax: " << bounds[5] 迭代几个对象并获取此属性 什么是完成这项任务的最佳方式,我有这个想法,但我想使用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]; } } 解决方法
我会采用这种方法:
double xmax = myObject.Max(mo => mo.bounds[1]); double ymax = myObject.Max(mo => mo.bounds[3]); double zmax = myObject.Max(mo => mo.bounds[5]); 这会产生非常快速的结果. 如果你想使用linq只迭代一次枚举,那么就这样做: var max = myObject .Select(mo => mo.bounds) .Aggregate( new { x = double.MinValue,y = double.MinValue,z = double.MinValue },(a,b) => new { x = Math.Max(a.x,b[1]),y = Math.Max(a.y,b[3]),z = Math.Max(a.z,b[5]),}); 虽然这只是一次迭代,但我的测试显示它比第一种方法慢.第一种方法需要625ms,第二种方法需要705ms. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |