SelectMany: Ottenere Combinazioni con LINQ

In LINQ -oltre al select- esiste anche il SelectMany ed è proprio grazie ad esso che abbiamo la possibilità di ottenere una serie di combinazioni tra collezioni multipli. Riporto la descrizione del metodo SelectMany presente sul sito Microsoft

Proietta ogni elemento di una sequenza a un oggetto IEnumerable e combina le sequenze risultanti in una sequenza di tipo IQueryable.

Se concettualmente vi sembra semplice, l’utilizzo lo sarà ancora di più. SelectMany

1
2
3
4
5
6
7
8
9

private void LinqSelectMany(){

	var keywords = new string[] { "k1", "k2", "k3" };
	var contexts = new string[] { "c1", "c2", "c3" };

	var result = keywords.SelectMany(c => contexts, (c, k) => new { c, k });
}

Se non avete voglia di provare il codice proposto, il risultato ottenuto è il seguente

  • k1;c1

  • k1;c2

  • k1;c3

  • k2;c1

  • k2;c2

  • k2;c3

  • k3;c1

  • k3;c2

  • k3;c3

SelectMany VS Select

Ora -prima di chiudere- vi scrivo in maniera molto semplice la differenza tra le due proiezioni indicate

  • Select: seleziona valori da UNA collezioni

  • SelectMany: selezioni valori da PIU’ collezioni

Ora non vi resta che divertirvi sperimentando il tutto.