我有种子的收藏
var seeds = new [] {1, 2, 3, 4};
我想从每个种子运行一个异步方法,该方法对种子进行一些计算:
async Task<int> Calculation(int seed);
我的目标是执行这样的选择:
var results = from seed in seeds
let calculation = await Calculation(seed)
select new { seed, calculation };
不幸的是,使用LINQ不允许使用此语法。
如何使“结果”变量包含种子和计算?
(我会很感激任何答案,但特别是如果它使用System.Reactive的
Observable
) 最佳答案
这是一个Rx解决方案:
var seeds = new [] {1, 2, 3, 4};
var results = Observable.ToObservable(seeds)
.SelectMany(async i => new { seed = i, calculation = await Calculation(i)})
.ToEnumerable();