我有以下代码在 VB.net ( VS 2012 ) 中运行良好。请注意, m.Listen 返回一个 IObservable(of Maybe(of NominalObject))
Dim d As IDisposable = (From x In m.Listen(Of Maybe(Of NominalObject))()
From y In x
Select New LAPViewCommands(y)).
BindToControl(Me, Function(x) x.ViewModel)
d.DisposeWith(Me)
这是自定义用户控件的一部分,我有一些将 IObservables 绑定到模型的扩展方法。然而细节无关紧要。当我将代码更改为
(From x In m.Listen(Of Maybe(Of NominalObject))()
From y In x
Select New LAPViewCommands(y)).
BindToControl(Me, Function(x) x.ViewModel).
DisposeWith(Me)
我有一个编译错误。请注意,流利的语法没有问题。
m.
Listen(Of Maybe(Of NominalObject)).
SelectMany(Function(x) x.Select(Function(y) New LAPViewCommands(y))).
BindToControl(Me, Function(x) x.ViewModel).
DisposeWith(Me)
这个问题是 VB.NET 解析器的一个奇怪的边缘案例,还是我在这里遗漏了一些重要的东西?总而言之,问题是。为什么我不能将 LINQ 查询表达式括起来,然后使用返回 void 的流畅扩展方法