C# 如何在c中返回datatable和integer#

C# 如何在c中返回datatable和integer#,c#,datatable,C#,Datatable,我正在创建一个返回datatable和int值的方法。我创建了一个只返回datatable的方法。请查看代码 public static DataTable ShutterstockSearchResults(string url) { int TotalCont=0; DataTable dt = new DataTable(); try { //intigration using B

我正在创建一个返回
datatable
int
值的方法。我创建了一个只返回
datatable
的方法。请查看代码

    public static  DataTable ShutterstockSearchResults(string url)
    { 

       int TotalCont=0;

        DataTable dt = new DataTable();
        try
        {
            //intigration using Basic Aouth with authrization headers

            var request = (HttpWebRequest)WebRequest.Create(url);
            var username = "SC";
            var password = "SK";
            string credentials = Convert.ToBase64String(Encoding.ASCII.GetBytes(username + ":" + password));
            request.Headers[HttpRequestHeader.Authorization] = string.Format("Basic {0}", credentials);
            request.UserAgent = "MyApp 1.0";
            var response = (HttpWebResponse)request.GetResponse();
            using (var stream = response.GetResponseStream())
            using (var reader = new StreamReader(stream))
            {
                JavaScriptSerializer js = new JavaScriptSerializer();
                var objText = reader.ReadToEnd();
                SearchResult myojb = (SearchResult)js.Deserialize(objText, typeof(SearchResult));
               TotalCount = myojb.total_count;          

                dt.Columns.Add("Id");
                dt.Columns.Add("Discription");
                dt.Columns.Add("Small_Thumb_URl");
                dt.Columns.Add("Large_Thumb_URL");
                dt.Columns.Add("Prieview_URL");
                dt.Columns.Add("ContributorID");
                dt.Columns.Add("aspect");
                dt.Columns.Add("image_type");
                dt.Columns.Add("is_illustration");
                dt.Columns.Add("media_type");
                foreach (var item in myojb.data)
                {
                    var row = dt.NewRow();
                    row["ID"] = item.id;
                    row["Discription"] = item.description;
                    row["Small_Thumb_URl"] = item.assets.small_thumb.url;
                    row["Large_Thumb_URL"] = item.assets.large_thumb.url;
                    row["Prieview_URL"] = item.assets.preview.url;
                    row["ContributorID"] = item.contributor.id;
                    row["aspect"] = item.aspect;
                    row["image_type"] = item.image_type;
                    row["is_illustration"] = item.is_illustration;
                    row["media_type"] = item.media_type;
                    dt.Rows.Add(row);
                }
                // List<SearchResult> UserList = JsonConvert.DeserializeObject<List<SearchResult>>(objText);
                // Response.Write(reader.ReadToEnd());
            }          

        }

        catch (WebException ea)
        {

            Console.WriteLine(ea.Message);
            using (var stream = ea.Response.GetResponseStream())
            using (var reader = new StreamReader(stream))
            {
                Console.WriteLine(reader.ReadToEnd());
            }
        }

        return dt;

    }
公共静态数据表搜索结果(字符串url)
{ 
int TotalCont=0;
DataTable dt=新的DataTable();
尝试
{
//使用基本Aouth和授权头进行初始化
var request=(HttpWebRequest)WebRequest.Create(url);
var username=“SC”;
var password=“SK”;
字符串凭据=Convert.ToBase64String(Encoding.ASCII.GetBytes(username+“:”+password));
request.Headers[HttpRequestHeader.Authorization]=string.Format(“基本{0}”,凭证);
request.UserAgent=“MyApp 1.0”;
var response=(HttpWebResponse)request.GetResponse();
使用(var stream=response.GetResponseStream())
使用(变量读取器=新的流读取器(流))
{
JavaScriptSerializer js=新的JavaScriptSerializer();
var objText=reader.ReadToEnd();
SearchResult myojb=(SearchResult)js.反序列化(objText,typeof(SearchResult));
TotalCount=myojb.total\u count;
dt.列。添加(“Id”);
dt.列。添加(“说明”);
添加(“小拇指URl”);
添加(“大拇指URL”);
添加(“Prieview_URL”);
dt.列。添加(“出资人”);
dt.列。添加(“方面”);
添加(“图像类型”);
dt.Columns.Add(“is_插图”);
添加(“媒体类型”);
foreach(myojb.data中的变量项)
{
var row=dt.NewRow();
行[“ID”]=item.ID;
行[“说明”]=项目说明;
行[“Small_Thumb_URl”]=item.assets.Small_Thumb.URl;
行[“Large_Thumb_URL”]=item.assets.Large_Thumb.URL;
行[“Prieview_URL”]=item.assets.preview.URL;
行[“ContributorID”]=item.contributor.id;
行[“方面”]=item.aspect;
行[“图像类型”]=item.image\u类型;
行[“is_插图”]=项。is_插图;
行[“媒体类型”]=item.media\u type;
dt.行。添加(行);
}
//List UserList=JsonConvert.DeserializeObject(objText);
//Response.Write(reader.ReadToEnd());
}          
}
捕获(WebException ea)
{
控制台写入线(ea消息);
使用(var stream=ea.Response.GetResponseStream())
使用(变量读取器=新的流读取器(流))
{
Console.WriteLine(reader.ReadToEnd());
}
}
返回dt;
}

我想返回
datatable
TotalCont
。请帮助一般来说,一个方法只能返回一种类型

您有两个选择:

1) 创建一个具有
DataTable
int
字段的类,例如:

public class MyReturnType
{
     public DataTable TheDataTable {get; set;}
     public int TotalCount {get; set;}
}
并从方法中返回此类型

2) 您可以在方法中添加
out
参数:

public static  DataTable ShutterstockSearchResults(string url, out totalCount)
public static  MyReturnType ShutterstockSearchResults(string url)
    { 
       MyReturnType result=new MyReturnType();
       int TotalCont=0;

        DataTable dt = new DataTable();
        try
        {
            //intigration using Basic Aouth with authrization headers

            var request = (HttpWebRequest)WebRequest.Create(url);
            var username = "SC";
            var password = "SK";
            string credentials = Convert.ToBase64String(Encoding.ASCII.GetBytes(username + ":" + password));
            request.Headers[HttpRequestHeader.Authorization] = string.Format("Basic {0}", credentials);
            request.UserAgent = "MyApp 1.0";
            var response = (HttpWebResponse)request.GetResponse();
            using (var stream = response.GetResponseStream())
            using (var reader = new StreamReader(stream))
            {
                JavaScriptSerializer js = new JavaScriptSerializer();
                var objText = reader.ReadToEnd();
                SearchResult myojb = (SearchResult)js.Deserialize(objText, typeof(SearchResult));
               TotalCount = myojb.total_count;          

                dt.Columns.Add("Id");
                dt.Columns.Add("Discription");
                dt.Columns.Add("Small_Thumb_URl");
                dt.Columns.Add("Large_Thumb_URL");
                dt.Columns.Add("Prieview_URL");
                dt.Columns.Add("ContributorID");
                dt.Columns.Add("aspect");
                dt.Columns.Add("image_type");
                dt.Columns.Add("is_illustration");
                dt.Columns.Add("media_type");
                foreach (var item in myojb.data)
                {
                    var row = dt.NewRow();
                    row["ID"] = item.id;
                    row["Discription"] = item.description;
                    row["Small_Thumb_URl"] = item.assets.small_thumb.url;
                    row["Large_Thumb_URL"] = item.assets.large_thumb.url;
                    row["Prieview_URL"] = item.assets.preview.url;
                    row["ContributorID"] = item.contributor.id;
                    row["aspect"] = item.aspect;
                    row["image_type"] = item.image_type;
                    row["is_illustration"] = item.is_illustration;
                    row["media_type"] = item.media_type;
                    dt.Rows.Add(row);
                }
                // List<SearchResult> UserList = JsonConvert.DeserializeObject<List<SearchResult>>(objText);
                // Response.Write(reader.ReadToEnd());
            }          

        }

        catch (WebException ea)
        {

            Console.WriteLine(ea.Message);
            using (var stream = ea.Response.GetResponseStream())
            using (var reader = new StreamReader(stream))
            {
                Console.WriteLine(reader.ReadToEnd());
            }
        }

        result.TheDataTable=dt;
        result.TotalCount=TotalCount;
        return result:

    }

并在您的方法中分配到
totalCount

回答Klaus答案中的注释:

    public class MyReturnType
    {
         public DataTable TheDataTable {get; set;}
         public int TotalCount {get; set;}
    }
在你的方法中:

public static  DataTable ShutterstockSearchResults(string url, out totalCount)
public static  MyReturnType ShutterstockSearchResults(string url)
    { 
       MyReturnType result=new MyReturnType();
       int TotalCont=0;

        DataTable dt = new DataTable();
        try
        {
            //intigration using Basic Aouth with authrization headers

            var request = (HttpWebRequest)WebRequest.Create(url);
            var username = "SC";
            var password = "SK";
            string credentials = Convert.ToBase64String(Encoding.ASCII.GetBytes(username + ":" + password));
            request.Headers[HttpRequestHeader.Authorization] = string.Format("Basic {0}", credentials);
            request.UserAgent = "MyApp 1.0";
            var response = (HttpWebResponse)request.GetResponse();
            using (var stream = response.GetResponseStream())
            using (var reader = new StreamReader(stream))
            {
                JavaScriptSerializer js = new JavaScriptSerializer();
                var objText = reader.ReadToEnd();
                SearchResult myojb = (SearchResult)js.Deserialize(objText, typeof(SearchResult));
               TotalCount = myojb.total_count;          

                dt.Columns.Add("Id");
                dt.Columns.Add("Discription");
                dt.Columns.Add("Small_Thumb_URl");
                dt.Columns.Add("Large_Thumb_URL");
                dt.Columns.Add("Prieview_URL");
                dt.Columns.Add("ContributorID");
                dt.Columns.Add("aspect");
                dt.Columns.Add("image_type");
                dt.Columns.Add("is_illustration");
                dt.Columns.Add("media_type");
                foreach (var item in myojb.data)
                {
                    var row = dt.NewRow();
                    row["ID"] = item.id;
                    row["Discription"] = item.description;
                    row["Small_Thumb_URl"] = item.assets.small_thumb.url;
                    row["Large_Thumb_URL"] = item.assets.large_thumb.url;
                    row["Prieview_URL"] = item.assets.preview.url;
                    row["ContributorID"] = item.contributor.id;
                    row["aspect"] = item.aspect;
                    row["image_type"] = item.image_type;
                    row["is_illustration"] = item.is_illustration;
                    row["media_type"] = item.media_type;
                    dt.Rows.Add(row);
                }
                // List<SearchResult> UserList = JsonConvert.DeserializeObject<List<SearchResult>>(objText);
                // Response.Write(reader.ReadToEnd());
            }          

        }

        catch (WebException ea)
        {

            Console.WriteLine(ea.Message);
            using (var stream = ea.Response.GetResponseStream())
            using (var reader = new StreamReader(stream))
            {
                Console.WriteLine(reader.ReadToEnd());
            }
        }

        result.TheDataTable=dt;
        result.TotalCount=TotalCount;
        return result:

    }
公共静态MyReturnType ShutterstockSearchResults(字符串url)
{ 
MyReturnType结果=新的MyReturnType();
int TotalCont=0;
DataTable dt=新的DataTable();
尝试
{
//使用基本Aouth和授权头进行初始化
var request=(HttpWebRequest)WebRequest.Create(url);
var username=“SC”;
var password=“SK”;
字符串凭据=Convert.ToBase64String(Encoding.ASCII.GetBytes(username+“:”+password));
request.Headers[HttpRequestHeader.Authorization]=string.Format(“基本{0}”,凭证);
request.UserAgent=“MyApp 1.0”;
var response=(HttpWebResponse)request.GetResponse();
使用(var stream=response.GetResponseStream())
使用(变量读取器=新的流读取器(流))
{
JavaScriptSerializer js=新的JavaScriptSerializer();
var objText=reader.ReadToEnd();
SearchResult myojb=(SearchResult)js.反序列化(objText,typeof(SearchResult));
TotalCount=myojb.total\u count;
dt.列。添加(“Id”);
dt.列。添加(“说明”);
添加(“小拇指URl”);
添加(“大拇指URL”);
添加(“Prieview_URL”);
dt.列。添加(“出资人”);
dt.列。添加(“方面”);
添加(“图像类型”);
dt.Columns.Add(“is_插图”);
添加(“媒体类型”);
foreach(myojb.data中的变量项)
{
var row=dt.NewRow();
行[“ID”]=item.ID;
行[“说明”]=项目说明;
行[“Small_Thumb_URl”]=item.assets.Small_Thumb.URl;
行[“Large_Thumb_URL”]=item.assets.Large_Thumb.URL;
行[“Prieview_URL”]=item.assets.preview.URL;
行[“ContributorID”]=item.contributor.id;
行[“方面”]=item.aspect;
行[“图像类型”]=item.image\u类型;
行[“is_插图”]=项。is_插图;
行[“媒体类型”]=item.media\u type;
dt.行。添加(行);
public class EmptyClass
{
    public static void Main(){
        EmptyClass something = new EmptyClass ();

        Tuple<String, int> tuple = something.returnMe ();

        Console.WriteLine ("Item 1: " + tuple.Item1);
        Console.WriteLine ("Item 2: " + tuple.Item2);
    }

    public EmptyClass ()
    {
    }

    public Tuple<String, int> returnMe() {
        return Tuple.Create ("Hello", 2);
    }
}
    public static Tuple<DataTable, int> ShutterstockSearchResults(string url)
    {
        [...]
        return new Tuple<DataTable, int>(dt, totalCount);
    }

    public static void SomeConsumerMethod()
    {
        var result = ShutterstockSearchResults(myPath);
        DataTable dt = result.Item1;
        int totalCount = result.Item2;
    }