假设一个对象列表,每个对象都有一个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 = ???
}
我想我正在看这种错误的方式。有没有更好的方法呢?
答案 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];
}