.Net IList コレクションを逆の順序で反復するにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/90996

  •  01-07-2019
  •  | 
  •  

質問

項目 (parent first) を含む IList があります。親が最後に追加され、ユーザーによって最初に選択されるように上に描画されるように、逆の順序でダイアグラム ドキュメントに追加する必要があります。

最善の方法は何ですか?以下に投稿している私が現在していることよりも優れた/よりエレガントなもの。

役に立ちましたか?

解決

.NET 3.5 を使用している場合は、LINQ の Reverse を使用できますか?

foreach(var item in obEvtArgs.NewItems.Reverse())
{
   ...
}

(汎用 IList について話していると仮定します)

他のヒント

へのコメントに基づいて、 デイビーの答え, 、 そして ギシュのオリジナルの答え, 、弱い型をキャストできます System.Collections.IList を使用して汎用コレクションに System.Linq.Enumerable.Cast 拡張メソッド:

var reversedCollection = obEvtArgs.NewItems
  .Cast<IMySpecificObject>( )
  .Reverse( );

これにより、逆方向の両方のノイズが除去されます。 for ループ、そして as 元のコレクションから厳密に型指定されたオブジェクトを取得するにはキャストします。

NewItems はここの私のリストです...ただし、これは少し不格好です。

for(int iLooper = obEvtArgs.NewItems.Count-1; iLooper >= 0; iLooper--)
            {
                GoViewBoy.Document.Add(CreateNodeFor(obEvtArgs.NewItems[iLooper] as IMySpecificObject, obNextPos));
            }

LINQ は必要ありません。

var reversed = new List<T>(original); // assuming original has type IList<T>
reversed.Reverse();
foreach (T e in reversed) {
  ...
}
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top