在c#中导航通用的集合列表

时间:2010-02-16 10:30:49

标签: c# collections

我在通用列表中有一组对象。

我想知道导航这个系列的最佳方法是什么。 我想做“MoveNext”,“MovePrevious”等操作。

基本上我的收藏是流程中的一些步骤,我希望能够沿着步骤移动。

在Sql中是否存在与C#等效的MoveNext和MovePrevious

5 个答案:

答案 0 :(得分:6)

您可以使用LinkedList<T>课程 每个元素都有对前一个元素和下一个元素的引用 有关示例,请查看文档链接。

答案 1 :(得分:3)

只需在列表中添加Current媒体资源即可。

未经测试。只是看起来正确。

并且你应该根据自己的喜好实施一个警卫,例如:起始指数。你应该从-1开始并需要一个movenext吗?由你决定

   public class BackAndForthList<T> : List<T>
    {
        private int _current = 0;

        public T Current
        {
            get { return this[_current]; }
        }

        public void MoveNext()
        {
            _current++;
            if (_current >= Count)

            {
                _current = 0;
            }
        }

        public void MovePrevious()
        {
            _current--;

            if (_current < 0)
            {
                _current = Count - 1;
            }
        }
    }

答案 2 :(得分:1)

为了继续前进,您可以使用枚举器:

list.GetEnumerator().MoveNext()

答案 3 :(得分:0)

我不知道内置的功能可以做到这一点,但你可以通过拥有一个保存索引的变量来做到这一点。当你想要MoveNext然后i ++,当你想要MovePrevious时使用i--(假设你使用i作为变量)。

编辑:我错了。这是MSDN的一个片段,可以满足您的要求。我没有仔细研究过它,但它出现在关于StringCollections

的文章中
public static void PrintValues2( StringCollection myCol )  {
      StringEnumerator myEnumerator = myCol.GetEnumerator();
      while ( myEnumerator.MoveNext() )
         Console.WriteLine( "   {0}", myEnumerator.Current );
      Console.WriteLine();
   }

答案 4 :(得分:0)

使用BindingListBindingSource或从中获取您自己的。