c# – 在Rx中选择Many

前端之家收集整理的这篇文章主要介绍了c# – 在Rx中选择Many前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
请任何人告诉我Rx中的SelectMany运算符是如何工作的.我也不知道 Linq中有关此运算符的更多信息.

请在一个简单示例的帮助下解释这一点,以及在什么情况下我们将在Rx中使用此运算符.

解决方法

SelectMany将投影和展平结合为一个步骤.假设您有许多列表,例如{{1,2},{3,4,5},{6,7}},您可以使用SelectMany将其展平为单个列表,如:{1,2,3,5,6,7}

Rx中的SelectMany可以将多个序列展平为一个可观察的(实际上有几个重载).

对于一个实际的例子,假设你有一个函数DownloadFile(filename),它给你一个Observable,它在文件完成下载时产生一个值.你现在可以写:

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!"));

DownloadFile的所有3个可观察对象都被展平为一个,因此您可以等待3个值到达以查看是否已完成所有下载.

猜你在找的C#相关文章