有这样的功能:
public List<Point> FindNextPoint(List<Point> source, Point point, List<Point> findedPoints)
{
List<Point> result = new List<Point>();
List<Point> points = source.FindAll(
delegate (Point i)
{
return (Math.Abs(i.X - point.X) <= 2 && Math.Abs(i.Y - point.Y) <= 2) && !findedPoints.Contains(i);
}
);
result.AddRange(points);
findedPoints.AddRange(points);
for (int i = 0; i < points.Count; i++)
{
List<Point> findPoints = FindNextPoint(source, points[i], findedPoints);
result.AddRange(findedPoints);
}
return result;
}
但是它会返回列表中的许多重复点,如果要摆脱它,该如何摆脱?谢谢
我的意思是,每当我运行该函数时,它都会返回一个列表,我想知道是否有可能返回一个不包含之前数据的列表。
例如。我首先运行该函数,它返回一个包含Point {x = 0,y = 1}的值,当我第二次运行该函数时,它将不会返回之前返回的相同Point,也不会通过FindAll来找到它。
答案 0 :(得分:0)
返回数据时,您应该使用以下代码:
return result.Distinct();
并且不要忘记在下面的顶部添加代码,否则您将看不到Distinct函数:
using System.Linq;