删除重复的元素列表<vector3> Mono / C# - Unity3D

时间:2017-03-29 17:31:59

标签: 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
PointsToGo.Add(new Vector3(4, 4, 4));

你知道如何解决这个问题吗?也许Linq可以帮助我?

感谢您的回答!

2 个答案:

答案 0 :(得分:5)

这是您的解决方案

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

请注意,您已将using System.Linq;添加到代码顶部。

答案 1 :(得分:2)

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

List<Vector3> list = new List<Vector3>(new HashSet<Vector3>(originalListWithDuplicate));

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