Supponiamo di avere un oggetto Utente ed un oggetto Gruppo
public class Utente
{
public string Nome { get; set; }
public IList<Gruppo> Gruppi { get; set; }
}
public class Gruppo
{
public string Descrizione { get; set; }
}
Abbiamo un collezione di oggetti Utente, ciascuno dei quali ha a sua volta una collezione di gruppi
IList<Utente> list = new List<Utente>
{
new Utente()
{
Gruppi = new List<Gruppo>()
{
new Gruppo(){Descrizione = "GRUPPO1"},
new Gruppo(){Descrizione = "GRUPPO2"},
}
},
new Utente()
{
Gruppi = new List<Gruppo>()
{
new Gruppo(){Descrizione = "GRUPPO3"},
new Gruppo(){Descrizione = "GRUPPO4"},
}
}
};
Ora vogliamo estrarre tutti i gruppi di tutti gli utenti, ma se utilizziamo la Select di Linq otterremmo un IEnumerable di liste di oggetti Gruppo:
IEnumerable<IList<Gruppo>> gruppi = list.Select(x=>x.Gruppi);
Noi invece vogliamo semplicemente una lista di oggetti gruppo e quindi possiamo scrivere:
IEnumerable<Gruppo> gruppiList = list.SelectMany(x => x.Gruppi);


0 commenti:
Posta un commento