C#(carousel)中最有效的无限循环

时间:2011-01-19 17:38:08

标签: c# asp.net for-loop carousel infinite-carousel

假设一个对象列表,每个对象都有一个ID,那么构建轮播的最有效方法是什么,这样每个对象都知道它的上一个和下一个项目是什么。最后一项的previousId将链接到第一项。第一项的previousId将链接到最后一项。

我需要前一个ID和下一个ID,因为这将用于填充网页上的下一个和上一个按钮。

我知道我可以迭代它们,为_next和_prev id添加占位符,但是最强高效的方法是什么?

我觉得我的对象应该是这样的:

class Item {
    public int Id { get; set; }
    public string ItemName { get; set; }
    public int Next { get; set; }
    public int Prev { get; set; }
}

那么,如果我有一个List<Item> items我怎样才能最有效地 为每个项目添加上一个和下一个ID?

    int _prev = items.LastOrDefault().id;
    int _next = items.Count > 1 ? items[1].id : _prev;
    foreach (var i in items) {
        i.prev = _prev;
        i.next = (_next < 
        _prev = i.id;
        //_next = ???
    }

我想我正在看这种错误的方式。有没有更好的方法呢?

2 个答案:

答案 0 :(得分:3)

使用LinkedList来保存您的物品。

答案 1 :(得分:3)

如果您不想使用LinkedList并且愿意使用索引而不是forec,正如Marc Gravel建议的那样:

int count = items.Length;
for(int index = 0; index < count; index ++)
{
  item.Next = items[(index + 1) % count];
  item.Prev = items[(index - 1 + count) % count];
}