【问题标题】:Combine results from API into one object将来自 API 的结果合并到一个对象中
【发布时间】:2016-10-31 14:40:59
【问题描述】:

我正在使用 asp.net mvc web api2 控制器创建一个简单的 api 使用者应用程序。

我的web api控制器中的两个get请求如下:

public async Task<List<User>> GetUsersAsync()
{
    using (HttpClient httpClient = new HttpClient())
    {
        return JsonConvert.DeserializeObject<List<User>>(
                await httpClient.GetStringAsync("https://jsonplaceholder.typicode.com/posts")
            );
    }

}

public async Task<List<UserToDoList>> GetUserToDoListAsync()
{
    using (HttpClient httpClient = new HttpClient())
    {
        return JsonConvert.DeserializeObject<List<UserToDoList>>(
                await httpClient.GetStringAsync("http://jsonplaceholder.typicode.com/todos")
            );
    }

}

这给了我两个单独的对象列表用户列表和用户待办事项列表。

将它们组合起来的最佳/最快方法是什么,以便我可以以表格格式显示它,例如:

UserId  |  Name | Count Of Todo's

【问题讨论】:

  • 创建一个端点,结合两个调用并返回你想要的内容
  • @Nkosi 你能发布一个代码示例吗?

标签: c# asp.net json asp.net-mvc asp.net-web-api2


【解决方案1】:

结合这两个调用并通过调用您的 Web api 在客户端返回您想要的内容,或者创建一个新的端点来合并数据并返回组合数据

using (HttpClient httpClient = new HttpClient()) {
    var users = JsonConvert.DeserializeObject<List<User>>(
                    await httpClient.GetStringAsync("https://jsonplaceholder.typicode.com/posts")
                );
    var todos = JsonConvert.DeserializeObject<List<UserToDoList>>(
            await httpClient.GetStringAsync("http://jsonplaceholder.typicode.com/todos")
        );

    var result = from user in users
                 join todo in todos on user.UserId equals todo.UserId into userTodos
                 select new { UserId = user.UserId, Name = user.Name, CountOfTodos = userTodos.Count() };
}

【讨论】:

    猜你喜欢
    • 2017-04-14
    • 1970-01-01
    • 1970-01-01
    • 2017-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-23
    • 2018-06-14
    相关资源
    最近更新 更多