我想找到满足条件 a < X <= b
的所有连续元素, 然后将它们成对存储 (a,b)
.
到目前为止,这找到了所有 b
:
Tuple<Vector2, Vector2> getPointsWithinInterval(double X)
{
var points = List<Vector2> {...};
var list_of_b = Points.Skip(1).Where((p, i) =>
points[i].X < X && X <= p.X // condition
);
}
编辑:根据@MattBurland 的建议,我想出了一个有点不雅的解决方案
var ranges = Points
.Skip(1)
.Where((p, i) =>
Points[i].X < X && X <= p.X)
.Select((p, i) => new Tuple<Vector2, Vector2>(Points[i - 1], Points[i]));
例子:
X = 2
(1, 0)
(3, 0)
(1, 0)
(5, 0)
(6, 0)
返回:
(1, 0) , (3, 0)
(1, 0) , (5, 0)
最佳答案
这是抽象点的解决方案。
它可以扩展为 Vector2。
var pairs = points
.Take(points.Count - 1)
.Zip(points.Skip(1), Tuple.Create)
.Where(pair => pair.Item1.X < x && x <= pair.Item2.X)
关于c# - 获取列表中所有相邻元素的元组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34863009/