c# - 获得最多数组的Linq解决方案

标签 c# linq

拥有一个对象,该对象具有作为其几何边界的 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/

相关文章:

c# - ITextSharp 应用程序的 CSS 中的 Word-wrap 属性的替代方法

c# - HttpWebRequest的底层实现是什么?

c# - 更改拆分器突出显示/调整行大小

c# - IQueryable 的结构是什么?

linq - IQueryable 到 IQueryable<T>

c# - linq-to-sql 或 linq 在什么时候向数据库发送请求

linq - 如何过滤嵌套集合 Entity Framework 对象?

c# - 查找重复单词的值

c# - TextBox 不遵守 Get 返回的值

c# - 搜索大型 ConcurrentBag?