我在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上遇到了问题。添加了新的零件,具体包括{使用键...等。
可能是问题所在,还是填写列表的更好方法。
答案 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