4

LINQクエリ言語は、ReactiveExtensionsを使用したIEnumerableの場合と同様に、IObservableでも機能するという印象を受けました。私は次のコードを持っています

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バージョンのコードはOKです。ただし、FooのLINQバージョン(2行目)では、遅延バインディングが許可されていないというエラーが発生します。

x.Item1

xにカーソルを合わせると、Intellisenseは、タプル型ではなくオブジェクト型であると言います。ただし、同じ操作のオブジェクトクエリバージョン(最初の行)は正常にコンパイルされます。インポートしました

Imports system.reactive.linq

別の参照がありませんか?

4

1 に答える 1

1

質問のコードはすべて私にとっては問題なく機能します。エラーは発生しません。

おそらくインポートSystem.Reactiveも試してみてください。それ以外は問題ないようです。

于 2012-11-03T10:05:25.143 に答える