将数据集中的项目添加到列表

时间:2019-04-04 22:01:04

标签: c# vb.net

我在C#上有以下工作代码来填写列表:

[WebMethod]
public List<object> GetCheckTypes(int opc)
{
    List<object> result = new List<object>();
    DataTable results = new DataTable();

    results = conn.GetDataSetBySP("SP_NAME",
        new object[] { "@Opc" },
        new object[] { 1}).Tables[0];

    foreach (DataRow i in results.Rows)
    {
        result.Add(new { Id = i["Id"], Name = i["Name "] });
    }
}

但是我想使用VB做同样的事情。我有以下代码:

<WebMethod>
Public Function GetCheckTypes(ByVal opc As Integer) As List(Of Object)

    Dim result As List(Of Object) = New List(Of Object)()
    Dim results As DataTable = New DataTable()

    results = conn.GetDataSetBySP("SP_NAME", New Object() {"@Opc"}, New Object() {1}).Tables(0)

     For Each i As DataRow In results.Rows
         result.Add(New With {Key
             .Id = i("Id"), Key
             .Name = i("Name ")})
    Next
End Function

我在result上遇到了问题。添加了新的零件,具体包括{使用键...等。

可能是问题所在,还是填写列表的更好方法。

2 个答案:

答案 0 :(得分:1)

您的问题是VB.NET如何执行多行代码。您必须在一行的末尾附加一个_,该行将在下一行继续,这在C#中不必执行。

以下方法应该起作用:

result.Add(New With {Key _
    .Id = i("Id"), Key _
    .Name = i("Name ")})

答案 1 :(得分:1)

VB.NET还具有隐式的行延续(对于最后几个版本),因此如果您符合VB推断行延续的位置,则不必包括行延续字符-例如:

For Each i As DataRow In results.Rows
    result.Add(New With {
        Key .Id = i("Id"),
        Key .Name = i("Name ")
    })
Next i

请参阅:https://docs.microsoft.com/en-us/dotnet/visual-basic/programming-guide/program-structure/how-to-break-and-combine-statements-in-code