找到Vector3D列表的最小值

时间:2016-04-09 16:46:58

标签: c# performance foreach

我的Vector3D只是基本的X Y Z结构。我想从Vector3D列表中找到最小的Y值。实际上我是在foreach中做的,但速度很慢。此外,我不知道为什么我的foreach并不总是返回最小的Y.

float rAngle = 3000.0f;
foreach (Vector3D target in targets)
{
     if (target.Y - PlayerAngles.Y < rAngle && target.Y - PlayerAngles.Y > -rAngle)
     {
          rAngle = target.Y - PlayerAngles.Y;
          finalAngle = target;
     }
}

1 个答案:

答案 0 :(得分:3)

您可以使用LinqMin()功能在一行中循环显示整个列表。例如,参见下面的代码。您可以根据您的特定需求自定义lambda表达式x => x.Y

static void testVec() 
{
   List<Vector3D> vec = new List<Vector3D>();

   vec.Add(new Vector3D(0, 1, 0));
   vec.Add(new Vector3D(0, -1, 0));
   vec.Add(new Vector3D(0, 2, 0));

   double min_y = vec.Min(x => x.Y);
}