type var未定义vb.net

时间:2017-01-20 20:57:45

标签: vb.net datatable

我在C#中找到了一个例子,根据我的理解,VB.NET中除了'var'之外别无选择。我正在尝试创建一个数据表,该数据表将根据我调用此函数的代码中的LINQ命令进行填充。我已经搜索了一个解决方案,但无法找到任何有效的方法。对我应该使用的任何帮助将不胜感激。请注意,我同时也有Option Strict和Option Infer。

Private Shared Function ToDataTable(rows As List(Of DataRow)) As DataTable
    Dim table As New DataTable()
    table.Columns.Add("Title")
    table.Columns.Add("Console")
    table.Columns.Add("Year")
    table.Columns.Add("ESRB")
    table.Columns.Add("Score")
    table.Columns.Add("Publisher")
    table.Columns.Add("Developer")
    table.Columns.Add("Genre")
    table.Columns.Add("Date")

    For Each row As var In rows
        table.Rows.Add(row.ItemArray)
    Next

    Return table
End Function

4 个答案:

答案 0 :(得分:3)

C#使用'var'进行隐式输入 - VB使用Option Infer On结合省略类型。 VB等价物是:

Option Infer On

...

    For Each row In rows
        table.Rows.Add(row.ItemArray)
    Next row

答案 1 :(得分:2)

.NET已经为此扩展了.CopyToDataTable

Dim table As DataTable = rows.CopyToDataTable

答案 2 :(得分:1)

VB等价物只是Dim,没有任何强类型。

Dim sName = "John Henry"

在此示例中,编译器推断类型String(当Option Infer设置为On时)。

在您的示例中,您可以省略As var部分。编译器将推断类型DataRow

答案 3 :(得分:0)

很好地标记您的问题,在这种情况下,没有C#问题。您的问题是您没有在foreach语句中写出实际类型。这将解决它:

For Each row As DataRow In rows
        table.Rows.Add(row.ItemArray)
    Next