ObservableCollectionの処理順序に影響を与える簡単な方法はありますか?ObservableCollectionのシャニング処理シーケンス<T>(c#)
public class GeneratorObject : IComparable
{
int processingSequence {get; set;}
string property1 {get; set;}
Boolean property2 {get; set;}
public GeneratorObject(int processingSequence)
{
this.processingSequence = processingSequence;
}
public int CompareTo(object obj)
{
// Implementation
}
}
処理シーケンスは、すべての自然数が考えられます。
は、私は次のクラスを考えてみましょう。
私は本当にespeaciallyビューで、コレクションをソートしたいいけないそれらのいくつか
ObservableCollection<GeneratorObject> toIterate = new ObservableCollection<GeneratorObject>();
toIterate.Add(new GeneratorObject(99));
toIterate.Add(new GeneratorObject(1));
toIterate.Add(new GeneratorObject(10));
toIterate.Add(new GeneratorObject(6));
foreach (GeneratorObject field in toIterate)
{
// Manipulating the properties of field
}
の一部を反復します。反復の順序を変更したいだけです。最初に、シーケンス番号が最も小さい要素、... さらに重要ですが、イテレーションする間にアイテムを操作し、コレクションのコピーを使用することはできません。
IveはすでにIComparableを実装していて、簡単に言うことができると考えました。 UIとのバインディングを破棄せずにCollection.Sort()。
ありがとうございました。
何を試しましたか?痛みを伴う明白な答えは、コレクションのコピーをソートすることです(最終的には、下記の1つの回答で推奨されています)。あなたがそれをしていない理由は何ですか?より具体的に、あなたが試したことを明確に示す良い[mcve]を提供し、何が問題になっているのかを具体的に説明してください。 –
アドバイスをいただきありがとうございます。病気はより具体的なenxt時間をしようとする。対処しないという問題は、反復しながらアイテムを操作することです。 – theawak3r
質問を編集して明確にしてください。あなたの明確化をしても、問題はまだ広いことに注意してください。つまり、ソートされた一連のインデックスを基になるコレクションに維持することができますが、反復処理中にコレクションを変更している場合は、最も低いシーケンスで操作を実行するたびにコレクションのリニアスキャンを行うだけです#、その最低の#を見つける。 –