У меня сложилось впечатление, что язык запросов LINQ работает для IObservable так же, как и для IEnumerable с ReactiveExtensions. У меня есть следующий код
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 в порядке. Однако для версии LINQ Foo (вторая строка) я получаю ошибку позднего связывания, запрещенную на
x.Item1
Когда я наводил курсор на x, Intellisense говорит, что это объект типа, а не кортеж. Однако версия запроса объекта той же операции (первая строка) компилируется нормально. я импортировал
Imports system.reactive.linq
Я пропустил еще одну ссылку?