Existe-t-il un moyen facile d'influencer la séquence de traitement d'une ObservableCollection en C#?Changement de la séquence de traitement de ObservableCollection <T> (C#)
Disons que j'ai la classe suivante:
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
}
}
La séquence de traitement pourrait être tout nombre naturel.
Je veux itérer certains de certains d'entre eux
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
}
Je ne veux pas vraiment trier la collection, espeacially dans la vue. Je veux juste changer l'ordre pour l'itération. Tout d'abord, l'élément avec le numéro de séquence le plus bas, ..., En outre, il est important de dire que manipuler les éléments en itérant et ne pouvait pas utiliser une copie de la collection.
J'ai déjà implémenté IComparable et pensé que je pourrais dire facilement par exemple. Collection.Sort() sans détruire la liaison avec l'interface utilisateur.
Merci pour toute aide.
Qu'avez-vous essayé? La réponse douloureusement évidente est de trier une copie de la collection (comme - finalement - recommandé par la réponse affichée ci-dessous). Une raison pour laquelle vous ne faites pas ça? Svp soyez plus précis, et fournissez un bon [mcve] qui montre clairement ce que vous avez essayé, expliquez en quoi vous avez spécifiquement des problèmes. –
Merci pour le conseil. Je vais essayer d'être plus précis le temps enxtérieur. Le problème de ne pas faire face est de manipuler les objets pendant l'itération. – theawak3r
S'il vous plaît modifier votre question pour fournir des clarifications. Notez que même avec votre clarification, la question est encore large. Cela dit, bien que vous puissiez maintenir un tableau trié d'index dans la collection sous-jacente, si vous changez la collection pendant que vous itérez, vous devriez probablement faire un balayage linéaire sur la collection chaque fois que vous voulez effectuer votre opération sur la séquence la plus basse #, pour trouver le # le plus bas. –