2016-10-31 11 views
2

私は、asp.net mvc web api2コントローラを使用して単純なapiコンシューマアプリケーションを作成しています。これは私に与えユーザーの&リストの操作を行うにユーザー2つの別々のオブジェクトリストの一覧APIからの結果を1つのオブジェクトに結合する

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") 
      ); 
    } 

} 

次のように私のWeb APIコントローラで

2つのGET要求があります。

私は何のような表形式でそれを表示できるように、それらを結合するための最良/最速の方法です:

UserId | Name | Count Of Todo's 
+1

の二つの呼び出しを組み合わせて、あなたが望むものを返すエンドポイントを作成し返す新しいエンドポイントを作成するには、 – Nkosi

+0

@Nkosiあなたは、コードのサンプルをください投稿することができます。 – Robin

答えて

1

2つのコールを結合し、あなたを呼び出すことによって、あなたはどちらかのクライアント側で欲しいものを返します。ウェブ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() }; 
} 
+0

答えとしてマークされています。ありがとう@Nkosi – Robin

関連する問題