转换C#到VB.NET,但Vb.net代码不工作,下面转换的代码被粘贴。我得到错误Linq部分

时间:2014-03-15 09:06:24

标签: vb.net c#-to-vb.net

Dim dt As New DataTable("MyTable")
        dt.Columns.Add(New DataColumn("Name"))
        dt.Columns.Add(New DataColumn("Place"))
        dt.Columns.Add(New DataColumn("date", Type.[GetType]("System.String")))

创建数据表

Dim dr As DataRow = dt.NewRow()
        dr("Name") = "500"
        dr("Place") = "Chennai"
        dr("date") = "10-May-2014"
        dt.Rows.Add(dr)
        Dim dr1 As DataRow = dt.NewRow()
        dr1("Name") = "600"
        dr1("Place") = "Chennai"
        dr1("date") = "11-May-2014"
        dt.Rows.Add(dr1)

添加了行

        Dim dr2 As DataRow = dt.NewRow()
        dr2("Name") = "200"
        dr2("Place") = "Bangalore"
        dr2("date") = "12-Aug-2014"
        dt.Rows.Add(dr2)
        Dim dr3 As DataRow = dt.NewRow()
        dr3("Name") = "40"
        dr3("Place") = "Chennai"
        dr3("date") = "14-May-2014"
        dt.Rows.Add(dr3)
        Dim dr5 As DataRow = dt.NewRow()
        dr5("Name") = "9000"
        dr5("Place") = "Bangalore"
        dr5("date") = "15-Aug-2014"
        dt.Rows.Add(dr5)

将行添加到数据表

Dim dr4 As DataRow = dt.NewRow()
        dr4("Name") = "9000"
        dr4("Place") = "Bangalore"
        dr4("date") = "1-Aug-2014"
        dt.Rows.Add(dr4)

以下部分获取错误

Dim grouped = From groupbyUD In From userdefinedtable In dt.AsEnumerable()Group userdefinedtable By New With { _
            Key .placeCol = userdefinedtable("Place") _
        }New With { _
            Key .ValueUD = groupbyUD.Key, _
            Key .ColumnValuesUD = groupbyUD _
        }

Dim place As String = ""
        Dim [date] As String = ""
        Dim tempTable As New DataTable()
        Dim slectedFieldsTable As New DataTable()
        Dim newRow As DataRow
        Dim list As New List(Of Object)()

创建数据表

slectedFieldsTable = New DataTable()
        slectedFieldsTable.Columns.Add("place")
        slectedFieldsTable.Columns.Add("date")

同样在var下面得到错误并分组也得到错误。

For Each keyUD As var In grouped
            Console.WriteLine(keyUD.ValueUD.placeCol)
            place = DirectCast(keyUD.ValueUD.placeCol, String)
            Dim lst As New List(Of DateTime)()
            For Each columnValue As var In keyUD.ColumnValuesUD
                lst.Add(Convert.ToDateTime(columnValue("date")))
            Next
            Console.WriteLine(lst.Min())
            [date] = DirectCast(Convert.ToString(lst.Min()), String)
            slectedFieldsTable.Rows.Add(place, [date])
        Next

将值数据集绑定到列表

        For Each drin As DataRow In slectedFieldsTable.Rows
            list.Add(drin)
        Next
        tempTable.Columns.Add("place", GetType(String))
        tempTable.Columns.Add("date", GetType(String))
        For Each drlst As DataRow In list
            newRow = tempTable.NewRow()
            newRow("place") = drlst.ItemArray(0).ToString()
            newRow("date") = drlst.ItemArray(1).ToString()
            tempTable.Rows.Add(newRow)
            tempTable.AcceptChanges()
        Next
        Console.ReadLine()
    End Sub
End Class

结束命名空间

1 个答案:

答案 0 :(得分:0)

我认为以下代码可以解决您的问题。用你的代码替换代码。

Dim grouped = From userdefinedtable In dt.AsEnumerable() _
              Group userdefinedtable By Key = userdefinedtable("Place") Into Group _
              Select ValueUD = Key, ColumnValuesUD = Group

as Var替换为as Object

For Each keyUD As Object In grouped
    Console.WriteLine(keyUD.ValueUD.placeCol)
    place = DirectCast(keyUD.ValueUD.placeCol, String)
    Dim lst As New List(Of DateTime)()
    For Each columnValue As Object In keyUD.ColumnValuesUD
        lst.Add(Convert.ToDateTime(columnValue("date")))
    Next
    Console.WriteLine(lst.Min())
    [date] = DirectCast(Convert.ToString(lst.Min()), String)
    slectedFieldsTable.Rows.Add(place, [date])   
Next