删除重复的元素列表<;矢量3>;Mono/C#-Unity3D

删除重复的元素列表<;矢量3>;Mono/C#-Unity3D,c#,linq,unity3d,mono,C#,Linq,Unity3d,Mono,我需要删除Vector3列表中重复的元素。 例如,以下是一个列表: List<Vector3> PointsToGo = new List<Vector3>(); PointsToGo.Add(new Vector3(1, 1, 1)); PointsToGo.Add(new Vector3(2, 2, 2)); PointsToGo.Add(new Vector3(1, 1, 1)); // Get this one or the first one out Poin

我需要删除Vector3列表中重复的元素。 例如,以下是一个列表:

List<Vector3> PointsToGo = new List<Vector3>();

PointsToGo.Add(new Vector3(1, 1, 1));
PointsToGo.Add(new Vector3(2, 2, 2));
PointsToGo.Add(new Vector3(1, 1, 1)); // Get this one or the first one out
PointsToGo.Add(new Vector3(4, 4, 4));
List PointsToGo=new List();
添加(新向量3(1,1,1));
添加(新向量3(2,2,2));
PointsToGo.Add(新向量3(1,1,1));//把这个还是第一个拿出来
添加(新向量3(4,4,4));
你知道如何解决这个问题吗?也许林克能帮我

谢谢你的回答

这是您的解决方案

PointsToGo = PointsToGo.Distinct().ToList();

注意,您已经使用System.Linq添加了
到代码顶部。

如果您不想使用Linq(根据Unity doc,这是一件好事),可以使用以下命令:

List<Vector3> list = new List<Vector3>(new HashSet<Vector3>(originalListWithDuplicate));
List List=新列表(新哈希集(originalListWithDuplicate));

另一种解决方案是使用HashSet集合。这就是收集的目的,避免重复。您可能必须实现IEqualityComparer,以便它的行为完全符合您的需要。

VS 2015不知道Vector3的.Distinct()。我需要一个Using指令吗?您必须使用System.Linq导入
嗯,它看起来不像这样工作-我现在用一个较小的列表来尝试它。编辑:它在一个小列表中工作,但在我的大列表中不起作用。@louis12356:由于浮点精度问题,请小心使用此方法。对于我的情况,它现在可以工作,但感谢您让我知道这一点!这是什么
Vector3
类?它从何而来?@spender
Vector3
是那些特定于Unity的结构之一-基本上只有3个float(和一堆helper方法)。@spender a
struct
来自unty。就是它看起来的样子。感谢您提供此解决方案!!