2016-07-04 14 views
0

Ich bin neu im Dictionary-Datentyp in C#. Ich habe dieses Modell Artikel:Abrufen eines Werts aus dem Wörterbuch in ein Modelitem-Attribut

public Dictionary<int, string> language { get; set; } 
    public string languageChoice { get; set; } 

Da ist in meinem Controller ich diese bekam:

[Route("{id}/settings")] 
    [HttpGet] 
    public async Task<HttpResponseMessage> GetProjectSettings(Guid id) 
    { 
    var projectSettings = new ProjectSettings 
    { 
     Id = id,  
     language = new Dictionary<int, string>() { 
          {1,"English"}, 
          {2,"Spanish"}}, 
     languageChoice = //get language by ID   

    }; 

    if (projectSettings != null) 
    { 
     return Request.CreateResponse<ProjectSettings>(HttpStatusCode.OK, projectSettings); 

    } 
    else 
    { 
     return Request.CreateErrorResponse(HttpStatusCode.NotFound, "Project not found"); 
    } 
    } 

Ich möchte die json geben, die Integer-Objekt und nicht die Zeichenfolge der Sprache. Wie kann ich das machen?

Mit freundlichen Grüßen

+0

also willst du '{" 1 ":" English "}'? –

+0

Ja zum Beispiel aber im JSON-Objekt möchte ich wie diese Sprache habenChoice: "1" und nicht languageChoice: "English" – Fearcoder

+0

Etwas wie das: '[{" languageChoice ": 1}, {" languageChoice ": 2}] ' –

Antwort

0

Wenn Sie nicht ändern möchten, um Ihre bestehenden Dictionary<int, string> dann können Sie nur eine neue Dictionary<int, int> daraus erstellen.

var alteredDictionary = languages.ToDictionary(x => x.Key, x => x.Key); 

Dann tun

var projectSettings = new ProjectSettings 
{ 
    Id = id,  
    language = new Dictionary<int, string>() { 
         {1,"English"}, 
         {2,"Spanish"}}, 
    languageChoice = alteredDictionary[1]// optional .ToString() if you want string   
}; 

Wo 1 die Sprache Id Sie wollen.

Verwandte Themen