SelectMany
combina la proyección y el aplanamiento en un solo paso. Suponga que tiene un número de listas como { {1, 2}, {3, 4, 5}, { 6, 7 } }
puede utilizar SelectMany
para aplanarlo en una sola lista como: { 1, 2, 3, 4, 5, 6, 7}
SelectMany
en Rx puede acoplar múltiples secuencias en una observables (en realidad hay varias sobrecargas).
Para un ejemplo práctico, suponga que tiene una función DownloadFile(filename)
que le da un Observable que produce un valor cuando el archivo finaliza la descarga. Ahora puede escribir:
string[] files = { "http://.../1", "http://.../2", "http://.../3" };
files.ToObservable()
.SelectMany(file => DownloadFile(file))
.Take(3)
.Subscribe(c => Console.WriteLine("Got " + c) ,()=> Console.WriteLine("Completed!"));
Los 3 observables de DownloadFile
se aplanan en una sola, por lo que puede esperar a 3 valores para llegar a ver que todas las descargas se han completado.
http://stackoverflow.com/questions/3869329/rx-enumerableex-for-vs -enumerable-selectmany –
Parece un poco complicado ... soy bastante nuevo en la tecnología. ¿Puede proporcionar una muestra simple? – StezPet