我有一个有序的值列表。
public class GraphItem
{
public int ID { get; set; }
public int Value { get; set; }
}
public class Graphdata
{
IList<GraphItem> Items { get; set; }
}
在这个列表中,我正在使用几个SVG多边形创建一个水平区域图。每行一个多边形。因此,该区域的一个“峰值”的线需要在Item1和Item2的值之间结束。
我设法通过迭代集合并在迭代中进行计算来实现这一目的。但是我可以通过告诉GraphItem它是否在列表中来做到这一点,它应该检查它是否有一个前任,如果是,请从中获取Value,并添加两个值之间的差异,并将其作为该行的“多边形开始”值返回?
注意:我不想为列表中的所有项创建一个多边形,它需要拥有自己的多边形。至少现在。
答案 0 :(得分:1)
我会使用LinkedList而不是List。在LinkedList中,每个节点都保留对下一个节点或前一个节点的引用。双向链表记录前进和后退。
有一个内置的C#实现: 请参阅:http://msdn.microsoft.com/en-us/library/he2s3bh7.aspx
这样,您可以轻松找到上一个或下一个节点。
这个答案:Creating a very simple linked list有一个很好的用法示例。
或者,您可以自己动手。 此示例与其他任何示例一样好:http://seedotnet.wordpress.com/2011/04/28/doubly-linked-list/