按特定值对Vector3的列表进行排序

时间:2017-09-24 12:47:47

标签: c# sorting vector find max

我有一个Vector 3的列表,我想要做的是找到具有最高X值的Vector3,如果有多个具有最高XI的Vector3,则希望将Vector 3与最低的Y和最高的X.我希望该方法返回该Vector3的Z.这样做的最佳方式是什么?

抱歉,我对编码很新,我希望我已经很好地解释了我的问题。提前谢谢!

2 个答案:

答案 0 :(得分:0)

您可以使用linq轻松完成:

if (vectors.Count == 0)
{
     //Some appropriate action
}
else
{
    return vectors.OrderyBy(v => v.X)
                  .ThenByDescending(v => v.Y)
                  .Last()
                  .Z
}

请注意您的问题已在指定范围内:

  • 如果列表为空,会发生什么?
  • 如果存在多个X且最小Y的向量,会发生什么?

答案 1 :(得分:0)

找到了一个很好的方法:

Vector3[] arr; 
 Vector3 res = arr[0]; 

 for (int i = 1; i < arr.length; i++){
     if (arr[i].x > res.x || (arr[i].x == res.x && arr[i].y < res.y)){
         res = arr[i];
     }
 } 
 return res.z;