LINQ с расширениями RX

У меня сложилось впечатление, что язык запросов 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

Я пропустил еще одну ссылку?


person bradgonesurfing    schedule 02.11.2012    source источник


Ответы (1)


Весь ваш код в вопросе отлично работает для меня. Я не понимаю твоей ошибки.

Возможно, попробуйте также импортировать System.Reactive, но в остальном все выглядит нормально.

person Enigmativity    schedule 03.11.2012