使用先前定义的变量的LINQ表达式

时间:2018-07-13 16:16:03

标签: vb.net linq

我正在尝试创建一个LINQ表达式,该表达式将一个值转换为另一种值类型(在这种情况下,是将字符串转换为整数),然后将转换后的值添加到列表中。

问题在于它显示了此错误:

Range Variable 'newValue' hides a variable in an enclosing block or a range variable previously defined in the query expression

这是在抱怨,因为newValue是在LINQ表达式之外定义的,但是我需要它,否则所有其他内容都会以红色显示为undefined。

我该如何解决?

Dim newValue As Integer

Dim newList As List(Of Integer) = (
        From value In valueList
        Where Integer.TryParse(value, newValue)
        Select newValue).ToList()

enter image description here

1 个答案:

答案 0 :(得分:2)

VB关于LINQ查询语法有一些有趣的想法。

您可以切换到lambda语法或在Select中的变量周围加上括号:

Dim newList = valueList.Where(Function(value) Integer.TryParse(value, newValue)).Select(Function(value) newValue).ToList()

Dim newList As List(Of Integer) = (
        From value In valueList
        Where Integer.TryParse(value, newValue)
        Select (newValue)).ToList()