C# 使用webmethod/pagemethod返回具有键/值对的对象数组

C# 使用webmethod/pagemethod返回具有键/值对的对象数组,c#,asp.net,.net,vb.net,asp.net-ajax,C#,Asp.net,.net,Vb.net,Asp.net Ajax,我想得到一个对象数组,并根据键得到一个值 类似于以下javascript的内容: PageMethods.GetProducts(function(results) { var productName = results[0].name; }); 我曾在代码隐藏中尝试过这一点,但在结果中我得到了一个数组: VB 因此,我无法基于键获取值。 我知道我可以这样引用值的位置: results[0][0]; 但这并不理想 任何帮助都将不胜感激。您可以使用匿名类型 [WebMethod()]

我想得到一个对象数组,并根据键得到一个值

类似于以下javascript的内容:

PageMethods.GetProducts(function(results) {
   var productName  = results[0].name;
});
我曾在代码隐藏中尝试过这一点,但在结果中我得到了一个数组:

VB

因此,我无法基于键获取值。 我知道我可以这样引用值的位置:

results[0][0];
但这并不理想


任何帮助都将不胜感激。

您可以使用
匿名类型

[WebMethod()]
public static ArrayList GetProducts()
{

    ArrayList products = new ArrayList();

    DataSet1TableAdapters.ProductsTableAdapter prAdptr = new DataSet1TableAdapters.ProductsTableAdapter();
    DataSet1.ProductsDataTable prTbl = prAdptr.GetData;
    DataSet1.ProductsRow prRow = default(DataSet1.ProductsRow);

    foreach ( prRow in prTbl) {
        Collection product = new Collection();
        product.Add(prRow.ProductID, "id");
        product.Add(prRow.ProductName, "name");

        products.Add(product);
    }

    return products;
}
results[0][0];
foreach ( prRow in prTbl) {
    products.Add(new {
        id=prRow.ProductID,
        name=prRow.ProductName
    });
}