从两个索引列表中选择,创建新对象列表

时间:2013-10-07 19:39:18

标签: c# linq list select

我有两个列表:List<Vertex> points,保持顶点(x,y)和列表List<Triangles> triangles,保存三角形的节点(a,b,c)。因此,a,b,c是定义三角形的点的凹痕。

我现在想轻松计算这些。例如。我想让每个三角形的所有向量形成点a到点b:

list<vector> p21;
foreach triangle t p21.add(new vector(p[t.b].x-p[t.a].x, p[t.b].y-p[t.a].y));

但我确信使用linq可以非常优雅地完成。

类似的东西(不使用矢量而是“顶点”)

List<Vertex> = (from triangle in triangles select a,b  and from point in points select new { pi[b].x-pi[a], pi[b].x-pi[a] };

我该怎么做?

1 个答案:

答案 0 :(得分:0)

这似乎是这样做的。它非常自我描述,并且尽可能简单。

var verticesAb = triangles
    .Select(t => new Vertex(
        points[b].x - points[a].x,
        points[b].y - points[a].y));

如果您需要一次具体的收藏,您可以/应该添加.ToList()ToArray()。 评论中的版本似乎也没问题。