2012-05-23 53 views
1

我創建了SharePoint的SharePoint Web服務以返回兩個值,但我無法將DataTable用作該方法的返回類型。DataTable作爲Web Service asmx for SharePoint中方法的返回數據類型

如何使此方法在List<>中返回兩個差異值(差異數據類型)?

[WebMethod(EnableSession=true, Description=" Get All sites in the Site Collection.")] 
public List<string> GetAllSites(string InputSitecollectionUrl) 
{ 
    List<string> w = new List<string>(); 
    using (SPSite TargetsiteCollection = new SPSite(InputSitecollectionUrl)) 
    { 
     SPWebCollection allWebs = TargetsiteCollection.AllWebs; 
     foreach (SPWeb web in allWebs) 
     { 
      string WebUrl = web.Url; 
      string WebTitle = web.Title; 

      w.Add(WebUrl); 
      w.Add(WebTitle); 
     } 
    } 
    return w; 
} 

回答

2

而不是返回一個List<string>你可能會想使用List<KeyValuePair<T1, T2>>

var w = new List<KeyValuePair<string, string>>(); 
foreach (SPWeb web in allWebs) 
{ 
    w.Add(new KeyValuePair<string, string>(web.Url, web.Title)); 
} 

return w; 

您可以指定任何類型適合在KeyValuePair的類型約束您的需求。

+0

感謝您的回放,實際上我發現了另一種技術,我使用了一個DataSet,這給了我一次命名返回的DataTable列的機會。 – Waleed

0
DataSet set = new DataSet("sites"); 
     DataTable table1 = new DataTable("site"); 
     table1.Columns.Add("SiteUrl"); 
     table1.Columns.Add("SiteTitle"); 

     // Create a DataSet and put both tables in it. 
     using (SPSite TargetsiteCollection = new SPSite(InputSitecollectionUrl)) 
     { 
      SPWebCollection allWebs = TargetsiteCollection.AllWebs; 
      foreach (SPWeb web in allWebs) 
      { 
       string WebUrl = web.Url; 
       string WebTitle = web.Title; 
       table1.Rows.Add(WebUrl, WebTitle); 
      } 
      set.Tables.Add(table1); 

     } 
     return set; 
相關問題