使用webmethod/pagemethod返回具有键/值对的对象Arrray

问题描述:

我想获得一个对象数组并获取基于该键的值。使用webmethod/pagemethod返回具有键/值对的对象Arrray

事情是这样的javascript:

PageMethods.GetProducts(function(results) { 
    var productName = results[0].name; 
}); 

我在代码试图在这背后,但我得到阵列的结果数组:

VB

<WebMethod()> 
    Public Shared Function GetProducts() As ArrayList 

     Dim products As New ArrayList 

     Dim prAdptr As New DataSet1TableAdapters.ProductsTableAdapter 
     Dim prTbl As DataSet1.ProductsDataTable = prAdptr.GetData 
     Dim prRow As DataSet1.ProductsRow 

     For Each prRow In prTbl 
      Dim product As New Collection 
      product.Add(prRow.ProductID, "id") 
      product.Add(prRow.ProductName, "name") 

      products.Add(product) 
     Next 

     Return products 
    End Function 

C#

[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]; 

但这并不理想。

任何帮助,将不胜感激。

您可以使用Anonymous Typeshttp://msdn.microsoft.com/en-us/library/bb397696.aspx

foreach (prRow in prTbl) { 
    products.Add(new { 
     id=prRow.ProductID, 
     name=prRow.ProductName 
    }); 
}