我的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;
}
}
答案 0 :(得分:3)
您可以使用Linq的Min()
功能在一行中循环显示整个列表。例如,参见下面的代码。您可以根据您的特定需求自定义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);
}