2016-10-30 3 views
0

私はWeb APiで新しく、トークンベースの承認とユーザーの役割を持つアプリを持っています。 私は、役割 'ユーザー'を持つすべてのユーザーを取得する必要があるコントローラを持っています。 コントローラーのようになります。良いことだリクエストから配列に値を取得するWebAPi

public class UsersController : ApiController 
      { 
       public IEnumerable<ApplicationUser> GetUsersRoleUser() 
       { 
        var context = new ApplicationDbContext(); 
        var users = context.Users.Where(x => x.Roles.Select(y => y.RoleId).Contains("601fd2b9-4a7f-4063-a831-e15978f05657")).ToList(); 
      return users; 
    }} 

、と私は答えを得る:

[は@Ferriコメントのために編集された]

[{"Claims":[], 
"Logins":[], 
"Roles":[{"UserId":"2d9e98d4-2203-4f68-b8eb-6cac3c94cbd7","RoleId":"601fd2b9-4a7f-4063-a831-e15978f05657"}], 
"Email":null, 
"EmailConfirmed":false, 
"PasswordHash":"AGMPpGJcGtD5", 
"SecurityStamp":"ef896d77-e82a-4018-9023-1bf2e967e7bc", 
"PhoneNumber":"+375445907729", 
"PhoneNumberConfirmed":false, 
"TwoFactorEnabled":false, 
"LockoutEndDateUtc":null, 
"LockoutEnabled":false, 
"AccessFailedCount":0, 
"Id":"2d9e98d4-2203-4f68-b8eb-6cac3c94cbd7", 
"UserName":"sanya"}, 
{and another}] 

は、どのように私は、「値のみを持つ配列を得ることができますUserName "?

+0

あなたは完全なjsonの結果を貼り付けることができますか? – Ferri

+0

さて、貼り付けました。 – feofan

答えて

1

DTOデザインパターンを使用する必要があります。あなたのケースでは、匿名のタイプで十分です:

context.Users 
      .Where(x => x.Roles.Select(y => y.RoleId).Contains("601fd2b9-4a7f-4063-a831-e15978f05657")) 
      // Project each user into a DTO which just 
      // UserName property... 
      .Select(x => new { UserName = x.UserName }) 
      .ToList() 
+0

ありがとうございます!しかし、私は匿名のタイプを返すことはできませんか? – feofan

+0

@feofanもう試しましたか? ; P –

+0

ああ、私はしようとする)しかし、Visualスタジオ私は "System.Collections.Generic.IEnumerable > "を隠すことはできませんエラーを表示します。モデル>アプリケーションユーザー>」を選択します。私が間違っているのは何ですか?) – feofan

関連する問題