linq - System.IObservable<字符串> 到 System.IObservable<System.Collections.Generic.List<字符串>>

标签 linq system.reactive

如何转换System.IObservable<string>System.IObservable<System.Collections.Generic.List<string>>

public static IObservable<List<string>> GetUrlList(Uri url) {
  var result = (from request in Observable.Return(GetWebRequest(url, false))
    from response in Observable.FromAsyncPattern<WebResponse>(
    request.BeginGetResponse, request.EndGetResponse)()
      from item in GetUrlCollection(response).ToObservable()
    select item);
  return result;
}

这里项目的类型是“字符串列表”。我需要将其转换为 IObservable List of strings 。我怎样才能实现这个目标?

最佳答案

试试这个:

public static IObservable<List<string>> GetUrlList(Uri url)
{
    var result = (
        from request in Observable.Return(
            GetWebRequest(url, false))
        from response in Observable.FromAsyncPattern<WebResponse>(
            request.BeginGetResponse, request.EndGetResponse)()
        from item in GetUrlCollection(response)
            .ToObservable()
            .ToArray()
        select item
            .ToList());
    return result;
}

我对整个方法唯一关心的是您的 GetUrlCollection(response) 返回一个可枚举的值。您确实应该对此进行编码以返回可观察的。

关于linq - System.IObservable<字符串> 到 System.IObservable<System.Collections.Generic.List<字符串>>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11536847/

相关文章:

c# - Observable.Interval 未以预期频率更新 UI

c# - 拍摄 IObservable<T> 的快照

c# - 如何将阻塞事件转换为 Observable?

.net - 创建一个重复调用方法的 observable

c# - 将表达式树从等于转换为包含

c# - 如何使用 linq 从列表中的列表中选择某些字符串(按索引)?

c# - 在 switch 语句中为 LINQ 创建 where 条件

c# - 使用异常处理将 IEnumerable<Task<T>> 转换为 IObservable<T>

c# - Linq 使用正则表达式选择

c# - IEnumerable<int>.contains(MemberExpression) 的动态 Linq 表达式