2016-10-30 4 views
0

Ich bin neu in Web APi, und ich habe App mit Token-basierte Autorisierung und Benutzer Rollen. Ich habe Controller, die alle Benutzer mit der Rolle "Benutzer" erhalten müssen. -Controller wie folgt aussieht:Werte von Anforderung an Array abrufen 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; 
    }} 

Das ist gut, und ich erhalte Antwort:

[für @Ferri Kommentar wurde bearbeitet]

[{"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}] 

Wie ich nur Array mit Werten bekommen " Nutzername"?

+0

Könnten Sie in dieser Frage Ihr vollständiges JSON-Ergebnis einfügen? – Ferri

+0

Okay, ich habe eingefügt. – feofan

Antwort

1

Sie müssen DTO Entwurfsmuster verwenden. In Ihrem Fall sollte ein anonymer Typ ausreichen:

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

Danke! Aber ich kann keinen anonymen Typ zurückgeben? – feofan

+0

@feofan Hast du es schon versucht? ; P –

+0

Oh ja, ich versuche) Aber Visual Studio zeigt mir Fehler über kann nicht "System.Collections.Generic.List << anonyme Typ: Zeichenfolge UserName >>" in "System.Collections.Generic.IEnumerable ". Omg, was mache ich falsch?) – feofan