1

假设有一个对象列表,每个对象都有一个 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 = ???
    }

我想我看错了。有没有更好的方法来做到这一点?

4

2 回答 2

4

如果您不想使用 LinkedList 并愿意使用索引而不是 Marc Gravel 建议的 foreach :

int count = items.Length;
for(int index = 0; index < count; index ++)
{
  item.Next = items[(index + 1) % count];
  item.Prev = items[(index - 1 + count) % count];
}
于 2011-01-19T18:30:05.653 回答
3

使用LinkedList来保存您的对象。

于 2011-01-19T17:44:43.103 回答