Type anonyme collections?

Je suis à la recherche pour les meilleures pratiques pour la création de collections de types anonymes.

Il existe plusieurs approches - cette et la plupart des réponses sur cette fil supposer que l'ensemble de la collecte anonyme peut être construit en une seule instruction.

Que les types anonymes sont généralement utilisées pour remplacer les classes qui doivent être utilisés pour le stockage temporaire (tel que mis de l'avant dans cette SORTE de réponse), je voudrais éviter de créer et d'utiliser une classe anonyme pour les collections, comme ce post suggère.

Dans mon cas, je suis une itération sur une collection - pour chaque élément de la collection, je voudrais recueillir des objets d'un type anonyme (agissant comme un n-uplet). J'ai besoin de ces types anonymes à être placé dans une collection, puis de les trier pour la poursuite des travaux.

D'autres approches que j'ai considéré comme:

  1. Utiliser un objet[] ou ArrayList (perdant ainsi le bénéfice du type anonyme)
  2. La création d'une classe wrapper pour les éléments requis (en supprimant la nécessité pour le type anonyme)

C'est le seul endroit dans mon code que j'ai besoin d'une telle collection - quelle serait la meilleure approche?

Informations Supplémentaires:

Je suis en train de travailler avec les anciens .Net 1.1 objet, de sorte que les collections, je travaille avec sont fortement typés collections de la mise en œuvre de IEnumerable, et en tant que tel, la plupart d'extension Linq des méthodes telles que .Sélectionnez ne fonctionne pas:

Exemple de Code

foreach (Item item in myItems)
{
    foreach (Confirmation confirmation in item.GetConfirmations(true))
    {
        if (lastParentId != item.ParentId)
        {
            lastParentId = item.ParentId;
            parentObject = new ParentItem(lastParentId);
        }

        itemHolder = new ArrayList { item, confirmation };
        if (parentObject!= null)
        {
            itemHolder.Add(parentObject.Rate);
        }

        sortConfirmations.Add(confirmation.Date, itemHolder);
    }
}

//Use sortConfirmations

Résolution

J'ai fini à l'aide d'un dictionnaire générique pour recueillir les éléments connexes et l'utilisation .OrderBy() pour trier eux - moche, mais ça marche... et c'est mieux que le code existant.

Pour info, pour les utiliser LINQ avec des collections plus anciennes, utiliser .Cast<T>(), c'est à dire myItems.Cast<Item> (), etc.

OriginalL'auteur Oded | 2009-03-19