C# 返回数组值的ASP.NETWebAPI

C# 返回数组值的ASP.NETWebAPI,c#,asp.net-web-api,C#,Asp.net Web Api,ASP.NETWebAPI非常新。对于调用另一个ASHX服务的API调用,在正确的API配置(和返回类型)方面存在一些问题 我有以下代码(在HomeController中测试只是为了验证服务调用是否有效): 希望能对解决这个问题有一些见解。关于在WebAPI中返回数据库查询,我有一些想法,但是服务调用(和异步方法)有点让我感到不舒服 谢谢 **更新***** 我们能够找到一些解决这个问题的方法,我正在发布我的解决方案 public class ClientAddressController: A

ASP.NETWebAPI非常新。对于调用另一个ASHX服务的API调用,在正确的API配置(和返回类型)方面存在一些问题

我有以下代码(在HomeController中测试只是为了验证服务调用是否有效):

希望能对解决这个问题有一些见解。关于在WebAPI中返回数据库查询,我有一些想法,但是服务调用(和异步方法)有点让我感到不舒服

谢谢

**更新*****

我们能够找到一些解决这个问题的方法,我正在发布我的解决方案

public class ClientAddressController: ApiController
{
  public async Task<IHttpActionResult> GetClientAddress()
  {
    WebRequest request = WebRequest.CreateHttp("http://callme/address.ashx");

    var response = await request.GetResponseAsync();
    string content;

    using (var stream = response.GetResponseStream())
    using(var reader = new StreamReader(stream))
    {
        content = await reader.ReadToEndAsync();
    }

    var result = JsonConvert.DeserializeObject<MyResult[]>(content);
    return Ok(result);

    // How to return the result object??
  }
}

public class MyResult
{
    public string ClientAddress { get; set; }
}
公共类ClientAddressController:ApicController
{
公共异步任务GetClientAddress()
{
WebRequest=WebRequest.CreateHttp(“http://callme/address.ashx");
var response=wait request.GetResponseAsync();
字符串内容;
使用(var stream=response.GetResponseStream())
使用(变量读取器=新的流读取器(流))
{
content=wait reader.ReadToEndAsync();
}
var result=JsonConvert.DeserializeObject(内容);
返回Ok(结果);
//如何返回结果对象??
}
}
公共类MyResult
{
公共字符串客户端地址{get;set;}
}

附言:我将接受@Stripling的回答,因为他的回答为我提供了一些指导。

您需要创建一个带有
Address
属性的类,并将结果映射到该类的对象:

public async IQueryable<ClientAddressResult> GetClientAddress()
{
    WebRequest request = WebRequest.CreateHttp("http://callme/address.ashx");

    var response = await request.GetResponseAsync();
    string content;

    using (var stream = response.GetResponseStream())
    using(var reader = new StreamReader(stream))
    {
        content = await reader.ReadToEndAsync();
    }

    IEnumerable<MyResult> result = JsonConvert.DeserializeObject<MyResult[]>(content);

    return result.Select(r => new ClientAddressResult{Address = r.ClientAddress})
        .AsQueryable();
}

您可以将数组值作为动态列表返回,以便能够使用动态列表执行set方法返回

var resultList = new List<dynamic>();

resultList.Add(new {Address="Address 100"});
resultList.Add(new {Address="Address 200"});
resultList.Add(new {Address="Address 300"}); 

return resultList;
var resultList=newlist();
Add(新的{Address=“Address 100”});
Add(新的{Address=“Address 200”});
Add(新的{Address=“Address 300”});
返回结果列表;
希望这就是你想要的

public class ClientAddressController: ApiController
{
  public async Task<IHttpActionResult> GetClientAddress()
  {
    WebRequest request = WebRequest.CreateHttp("http://callme/address.ashx");

    var response = await request.GetResponseAsync();
    string content;

    using (var stream = response.GetResponseStream())
    using(var reader = new StreamReader(stream))
    {
        content = await reader.ReadToEndAsync();
    }

    var result = JsonConvert.DeserializeObject<MyResult[]>(content);
    return Ok(result);

    // How to return the result object??
  }
}

public class MyResult
{
    public string ClientAddress { get; set; }
}
public async IQueryable<ClientAddressResult> GetClientAddress()
{
    WebRequest request = WebRequest.CreateHttp("http://callme/address.ashx");

    var response = await request.GetResponseAsync();
    string content;

    using (var stream = response.GetResponseStream())
    using(var reader = new StreamReader(stream))
    {
        content = await reader.ReadToEndAsync();
    }

    IEnumerable<MyResult> result = JsonConvert.DeserializeObject<MyResult[]>(content);

    return result.Select(r => new ClientAddressResult{Address = r.ClientAddress})
        .AsQueryable();
}
public class MyResult
{
    public string ClientAddress { get; set; }
}

public class ClientAddressResult
{
    public string Address { get; set; }
}
var resultList = new List<dynamic>();

resultList.Add(new {Address="Address 100"});
resultList.Add(new {Address="Address 200"});
resultList.Add(new {Address="Address 300"}); 

return resultList;