C# 将项目从数据集添加到列表

C# 将项目从数据集添加到列表,c#,vb.net,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[] {

我在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 "] });
    }
}
[WebMethod]
公共列表GetCheckTypes(int opc)
{
列表结果=新列表();
DataTable结果=新DataTable();
结果=conn.GetDataSetBySP(“SP_名称”,
新对象[]{“@Opc”},
新对象[]{1})。表[0];
foreach(results.Rows中的数据行i)
{
添加(新的{Id=i[“Id”],Name=i[“Name”]});
}
}
但是我想用VB做同样的事情。我有以下代码:


公共函数GetCheckTypes(ByVal opc作为整数)作为列表(对象)
将结果变暗为列表(对象)=新列表(对象)()
作为DataTable的Dim结果=新DataTable()
results=conn.GetDataSetBySP(“SP_NAME”,New Object(){“@Opc”},New Object(){1})。表(0)
对于results.Rows中的每个i作为DataRow
结果.添加(使用{键新建)
.Id=i(“Id”),键
.Name=i(“名称”)})
下一个
端函数
我对结果有问题。使用{Key…等添加特定于新的部分


问题可能是什么,或者哪种填写列表的方式更好。

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

以下方面应起作用:

result.Add(使用{键新建)_
.Id=i(“Id”),键_
.Name=i(“名称”)})

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

以下方面应起作用:

result.Add(使用{键新建)_
.Id=i(“Id”),键_
.Name=i(“名称”)})

VB.NET也有隐式的行连续体(对于最近的几个版本),因此如果符合VB推断行连续体的条件,则不必包含行连续体字符-例如:

对于results.Rows中的每个i作为DataRow
结果。添加(新的){
Key.Id=i(“Id”),
Key.Name=i(“名称”)
})
接下来我

请参阅:

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

对于results.Rows中的每个i作为DataRow
结果。添加(新的){
Key.Id=i(“Id”),
Key.Name=i(“名称”)
})
接下来我

请参阅:

如果您使用的是VB无法推断的行连续体,则仅“必须”。如果您使用的是VB无法推断的行连续体,则仅“必须”。这是一个更准确的答案。此外,您甚至不必使用
。使用类似于
的东西和{.Foo=\u Foo,.Bar=\u Bar}
应该可以很好地工作。@AhmedAbdelhameed:您的版本应该可以很好地工作(没有“Key”),但在C中,匿名类型的每个字段都是不可变的,因此VB严格等价物确实要求每个字段都有“Key”。这是一个更准确的答案。此外,您甚至不必使用
Key
。使用类似
的{.Foo=\u Foo,.Bar=\u Bar}
应该可以正常工作。@AhmedAbdelhameed:您的版本应该可以正常工作(不带“Key”),但在C中,匿名类型的每个字段都是不可变的,因此VB严格等价物确实要求每个字段都有“Key”。