奇怪的Linq错误

时间:2009-02-28 18:35:56

标签: vb.net linq

我正在使用Linq将任何对象的数组转换为CSV列表:

String.Join(",", (From item In objectArray Select item.ToString()).ToArray())

这给了我一个奇怪的错误: “范围变量名称不能与'对象'类成员的名称相匹配。”

我可以通过将字符串包装在VB StrConv方法中来设置为“Nothing”:

String.Join(",", (From item In oArray Select StrConv(item.ToString(), VbStrConv.None)).ToArray())

然而,这似乎有点像黑客,我想避免它。

当出现这种问题时,有没有人有任何想法,还有更好的方法可以解决这个问题吗?

1 个答案:

答案 0 :(得分:10)

将您的代码修改为:

String.Join(",", (From item In objectArray Select stringVal = item.ToString()).ToArray())

问题是VB为Select子句返回的变量命名。隐式地,它会尝试将名称ToString提供给item.ToString(),这将与ToString方法冲突。为防止这种情况发生,您应明确指定名称(上面一行中为stringVal)。