2017-09-24 96 views
0

我有一个Vector 3列表,我想要做的是找到具有最高X值的Vector3,如果有多个Vector3与最高的XI想要将Vector 3与最低的Y和最高的X.我希望该方法返回该Vector3的Z.做这个的最好方式是什么?按特定值对Vector3的列表进行排序

对不起,我对编码很陌生,希望我已经解释好我的问题了。提前致谢!

+0

像这样'vector.OrderBy(V => VX).ToArray ();' – styx

回答

0

您可以使用LINQ轻松地做到这一点:

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

请注意,你的问题是下指定:

  • 如果该列表是空的,会发生什么?
  • 如果超过一个载体的最大值为X和最小值为Y,会发生什么情况?
+0

在我的情况的名单是不可能的为空,因为我已经手动定义它。另外这是不可能的(在我的情况下)有两个相同的y值。 – Max

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; 
相关问题