Gibt es eine einfache Möglichkeit, die Verarbeitungsreihenfolge einer ObservableCollection in C# zu beeinflussen?Chaning-Verarbeitungssequenz von ObservableCollection <T> (C#)
Lets sagen, dass ich die folgende Klasse:
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
}
}
Die Abarbeitungsreihenfolge jede natürliche Zahl sein könnte.
möchte ich einige von einigen von ihnen
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
}
Ich möchte nicht wirklich zu durchlaufen, die Sammlung sortieren, espeacially in der Ansicht. Ich möchte nur die Reihenfolge für die Iteration ändern. Zuerst das Element mit der niedrigsten Sequenznummer, ..., Weiter ist es wichtig zu sagen, dass ich die Items während der Iteration manipuliere und nicht einfach eine Kopie der Collection verwenden kann.
Ich habe bereits IComparable implementiert und dachte, ich könnte einfach sagen, z. Collection.Sort(), ohne die Bindung mit der Benutzeroberfläche zu zerstören.
Danke für jede Hilfe.
Was haben Sie versucht? Die naheliegendste Antwort ist, eine Kopie der Sammlung zu sortieren (wie es schließlich von der einen Antwort empfohlen wird). Irgendein Grund, warum du das nicht tust? Bitte seien Sie genauer und stellen Sie eine gute [mcve] zur Verfügung, die deutlich zeigt, was Sie ausprobiert haben, erklären Sie, was _speziell_ Sie Probleme haben. –
Danke für die Beratung. Ich werde versuchen, die Entime-Zeit genauer zu sein. Das Problem, nicht fertig zu werden, besteht darin, dass die Objekte beim Iterieren manipuliert werden. – theawak3r
Bitte bearbeiten Sie Ihre Frage, um Erläuterungen zu geben. Beachten Sie, dass die Frage auch bei Ihrer Klärung noch zu weit gefasst ist. Das heißt, Sie können zwar ein sortiertes Array von Indizes in der zugrunde liegenden Sammlung verwalten, aber wenn Sie die Sammlung während der Iteration ändern, sollten Sie wahrscheinlich jedes Mal einen linearen Scan für die Sammlung durchführen, wenn Sie die niedrigste Sequenz ausführen möchten #, um die niedrigste # zu finden. –