Comment ajouter à une liste en utilisant la fonction d'agrégation C # de Linq

J'ai une collection d'objets d'un type que je voudrais convertir en un autre type. Cela peut être fait facilement avec foreach, mais j'aimerais comprendre comment l'utiliser Linq fonction d'agrégation pour le faire.

Le problème est tout l'Agrégat des exemples types d'utilisation de la ligne de chaîne ou de type int, qui prennent en charge l'opérateur"+". J'aimerais avoir l'accumulateur de type liste, qui ne supporte pas les " + " de la sémantique.

Voici un exemple rapide:

public class DestinationType
{
    public DestinationType(int A, int B, int C) { ... }
}

var set = from item in context.Items
          select new { item.A, item.B, item.C };

var newSet = set.Aggregate( new List<DestinationType>(),
                            (list, item) => list.Add(new DestinationType(item.A, item.B, item.C)) );

Le problème est que la Liste des<>.Ajouter renvoie void. Le type de retour de la deuxième paramètre à l'Agrégation doit être une Liste.

Si j'avais une liste type de prises en charge " + " de type sémantique, je pouvais juste faire le deuxième paramètre

list + item

Cependant je ne peux pas trouver tout type de collection qui prend en charge ce genre de chose.

Semble que ce devrait être facilement possible dans Linq. Est-il possible? Aussi, si je suis absent une tout moyen le plus facile, je serais ravi d'apprendre que trop. Merci!

source d'informationauteur Slaggg | 2009-06-13

Leave a Reply

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *