Dim distinctJoints As IEnumerable
distinctJoints = From row In spotsTable.AsEnumerable()
Group row By Key = row("FUNCJOINTCODE") Into Group
Select Key, Group
_evaluatedJointsCount = (From row In spotsTable.AsEnumerable()
Group row By Key = row("FUNCJOINTCODE") Into Group
Select Key, Group).Count()
'Process each joint
For Each currentJoint In distinctJoints
Dim currentJointKey As String = currentJoint.Key
对于上面的代码currentJoint.Key
,显示在选项strict启用后延迟绑定的错误。
你能帮我这个忙吗?
答案 0 :(得分:0)
首先,恭喜您将代码移向Option Strict On
!起初可能需要做一些工作,但从长远来看是有回报的,因为在编译时而不是在运行时会发现很多错误。
也就是说,让我们看看您的问题。在这里:
Dim distinctJoints As IEnumerable
您将distinctJoints
声明为非通用IEnumerable
。迭代时,非通用IEnumerable返回类型Object
的项目。类型Object
不包含Key
方法。这就是为什么会出现编译时错误的原因。
由于您的LINQ查询返回的是匿名类型的通用IEnumerable,因此解决方案是改为使用类型推断。在项目属性中激活Option Infer On
(如果尚未激活),然后让编译器推断正确的数据类型:
' Dim distinctJoints As IEnumerable <-- remove this
Dim distinctJoints = From row In spotsTable.AsEnumerable()
Group row By Key = row("FUNCJOINTCODE") Into Group
Select Key, Group