4

我的印象是 LINQ 查询语言适用于 IObservable,就像它适用于带有 ReactiveExtensions 的 IEnumerable 一样。我有以下代码

Public Sub Foo(source As IObservable(Of Tuple(Of Integer, Integer)))
  Dim filtered = source.Where(Function(x) x.Item1 > 10).Select(Function(x) x.Item1 + x.Item2)
  Dim filtered2 = From x In source Where x.Item1 > 10 Select x.Item1 + x.Item2
End Sub

Public Sub Bar(source As IEnumerable(Of Tuple(Of Integer, Integer)))
  Dim filtered = source.Where(Function(x) x.Item1 > 10).Select(Function(x) x.Item1 + x.Item2)
  Dim filtered2 = From x In source Where x.Item1 > 10 Select x.Item1 + x.Item2
End Sub

IEnumerable 版本的代码是可以的。但是对于 Foo 的 LINQ 版本(第二行),我得到一个后期绑定不允许错误

x.Item1

当我将鼠标悬停在x上时,Intellisense 说它是对象类型而不是元组类型。但是,相同操作的对象查询版本(第一行)编译正常。我已经进口了

Imports system.reactive.linq

我错过了另一个参考吗?

4

1 回答 1

1

问题中的所有代码对我来说都很好。我不明白你的错误。

也许也尝试导入System.Reactive,但除此之外它看起来还不错。

于 2012-11-03T10:05:25.143 回答