C# DataTable作为Web服务asmx for SharePoint中方法的返回数据类型

C# DataTable作为Web服务asmx for SharePoint中方法的返回数据类型,c#,web-services,sharepoint,C#,Web Services,Sharepoint,我为SharePoint创建了一个web服务来返回两个值,但是我不能使用DataTable作为该方法的返回类型 如何使此方法在列表中返回两个差异值(差异数据类型) [WebMethod(EnableSession=true,Description=“获取网站集中的所有网站”)] 公共列表GetAllSites(字符串InputSitecollectionUrl) { 列表w=新列表(); 使用(SPSite TargetsiteCollection=新SPSite(InputSitecollec

我为SharePoint创建了一个web服务来返回两个值,但是我不能使用DataTable作为该方法的返回类型

如何使此方法在
列表中返回两个差异值(差异数据类型)

[WebMethod(EnableSession=true,Description=“获取网站集中的所有网站”)]
公共列表GetAllSites(字符串InputSitecollectionUrl)
{
列表w=新列表();
使用(SPSite TargetsiteCollection=新SPSite(InputSitecollectionUrl))
{
SPWebCollection allWebs=TargetsiteCollection.allWebs;
foreach(所有站点中的SPWeb)
{
字符串WebUrl=web.Url;
字符串WebTitle=web.Title;
w、 添加(WebUrl);
w、 添加(网络标题);
}
}
返回w;
}

您可能需要使用
列表,而不是返回
列表

var w=新列表();
foreach(所有站点中的SPWeb)
{
w、 添加(新的KeyValuePair(web.Url,web.Title));
}
返回w;

您可以在KeyValuePair类型约束中指定任何适合您需要的类型。

感谢您的重播,实际上我发现了另一种技术,我使用了一个数据集,这使我有机会命名返回的DataTable列。
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;
var w = new List<KeyValuePair<string, string>>();
foreach (SPWeb web in allWebs)
{
    w.Add(new KeyValuePair<string, string>(web.Url, web.Title));
}

return w;
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;