1

それぞれがIDを持つオブジェクトのリストを想定すると、カルーセルを構築する最も効率的な方法は何ですか。これにより、各オブジェクトは前のアイテムと次のアイテムが何であるかを知ることができます。最後のアイテムのpreviousIdは最初のアイテムにリンクします。最初のアイテムのpreviousIdは最後のアイテムにリンクします。

前のIDと次のIDが必要です。これは、Webページの次と前のボタンにデータを入力するために使用されるためです。

_nextと_previdのプレースホルダーを追加して、それらを反復処理できることはわかっていますが、これを行う最も効率的な方法は何ですか?

オブジェクトは次のようになります。

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

それで、もし私が持っているなら、どうすれば前と次のIDを各アイテムList<Item> items最も効率的に追加できますか?

    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 に答える