2

ListCollectionViewはインデクサー(View [0]など)をサポートしていないため、フィルター処理/ソートされたリストを反復処理する唯一の方法は、foreachを使用することです。

1)foreachは、ビュー内のアイテムの順序が反復中に保持されることを確認しますか?そうでない場合、代替手段は何ですか?

2)強く型付けされたListCollectionViewはありますか?linq拡張メソッドがたくさんなく、FindMaxThis、FindFirstThatがたくさんあります... :)

4

1 に答える 1

2

1)ListCollectionViewでforeachを使用すると、基になるコレクション(InternalListプロパティ)から列挙子を取得する可能性があります。List <>のインスタンスで初期化すると、列挙が正常に行われることを確信できます。

2)それを行うには2つのオプションがあります。まず、内部リストを使用して、強く型付けされたコレクションにキャストするか、クラス内のどこかにそのリストへの参照を格納します。2つ目は、ListCollectionViewインスタンスで直接Cast<>を使用することです。パフォーマンスが重要なアプリの場合は、最初のアプローチを選択します。

var collection = new ListCollectionView(new List<int>());
var even = collection
    .Cast<int>()
    .Where(n => n%2 == 0);
于 2012-05-20T04:38:11.337 に答える