26/06/11

Concatenare una proprietà di una lista di oggetti con Linq

Supponiamo di avere una lista di oggetti e vorremmo estrarre dalla lista una proprietà e concatenarla alla successiva, magari aggiungendo un separatore come il punto e virgola.

Con Linq questa operazione è estramente veloce, basta utilizzare l'extension method denominato Aggregate.
Esempio:

public class Foo

    {

        public string Proprieta1 { get; set; }

        public string Proprieta2 { get; set; }

        public string Proprieta3 { get; set; }

    }


Popoliamo la lista:
IList list = new List()
                {
                    new Foo() {Proprieta1 = "a1",Proprieta2 = "b1",Proprieta3 = "c1"},
                    new Foo() {Proprieta1 = "a2",Proprieta2 = "b2",Proprieta3 = "c2"},
                    new Foo() {Proprieta1 = "a3",Proprieta2 = "b3",Proprieta3 = "c3"}

                };




Ora testiamo il risultato:
var proprieta1Concatenata = list.Select(x => x.Proprieta1).Aggregate((x, y) => x + ";" + y);

Assert.AreEqual("a1;a2;a3",proprieta1Concatenata);



0 commenti:

Posta un commento

 
Design by Free WordPress Themes | Bloggerized by Lasantha - Premium Blogger Themes | Grants For Single Moms