获得直线上的内点

时间:2014-06-05 20:24:49

标签: c# linq

我要问的问题乍一看似乎是一个几何问题,但实际上可以通过使用LINQ来解决,至少我希望如此!

我在直线上有5个点,其中两个位于线的末端。如何使用LINQ选择行内部(而不是终点)的那些?

public class Point
{
    public double X;
    public double Y;
}

var listOfPointsOnALine = new List<Point>
{
    new Point { X = 2500, Y = 50 },
    new Point { X = 2540, Y = 112.5 },
    new Point { X = 2580, Y = 175 },
    new Point { X = 2620, Y = 237.5 },
    new Point { X = 2660, Y = 300 },
}

因此,使用上面列表中的一些LINQ应该会给我以下列表:

innerPointsOnALine: {(2540, 112.5), (2580, 175), (2620, 237.5)}
  1. 这些积分在原始列表中排序
  2. 这些点应与它们在原始列表中出现的顺序相同(listOfPointsOnALine)
  3. enter image description here

1 个答案:

答案 0 :(得分:2)

如果我理解正确,那么我认为你在寻找:

 var newList = listOfPointsOnALine
                          .Skip(1)
                          .Take(listOfPointsOnALine.Count - 2)
                          .ToList();

在执行此操作之前,您可能需要检查列表的长度。