.Net IList コレクションを逆の順序で反復するにはどうすればよいですか?
-
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) {
...
}
所属していません StackOverflow