c# - 获取列表中所有相邻元素的元组

标签 c# linq

我想找到满足条件 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/

相关文章:

c# - HTML.ActionLink 方法

c# - 在 Moq 中使用多个索引器

c# - 如何获取传递给属性构造函数的参数?

c# - 如何制作具有多个参数的linq表达式

C#获取两个文件的差异并用于增量备份

c# - 将 MemoryCache 内容持久化到文件

c# - 使用 LINQ 或 lambda 表达式获取该值的值和计数

vb.net - 选项严格类型和匿名类型不能一起使用吗?

c# - 使用 Linq 表达式作为具有父/子查询的规范模式

c# - 如何在 EF Linq 中使用 MySQL 函数 'Date'