2016-12-01 14 views
2

私はC#MVC 5カミソリでテーブルにデータを表示しています。私が使用している(変更することはできません)データをJSONで次のようになります。このテーブルに解決C#あるタイプから別のタイプへリストを変換

[ 
    { 
     "Status": "New", 
     "Denver": 2, 
     "Seattle": 0, 
     "New York": 3, 
     "El Paso": 0 
    }, 
    { 
     "Status": "In Progress", 
     "Denver": 1, 
     "Seattle": 2, 
     "New York": 5, 
     "El Paso": 1 
    }, 
    { 
     "Status": "Closed", 
     "Denver": 12, 
     "Seattle": 2, 
     "New York": 1, 
     "El Paso": 3 
    } 
] 

+-------------+--------+---------+----------+---------+ 
| Status | Denver | Seattle | New York | El Paso | 
+-------------+--------+---------+----------+---------+ 
| New   |  2 |  0 |  3 |  0 | 
| In Progress |  1 |  2 |  5 |  1 | 
| Closed  |  12 |  2 |  1 |  3 | 
+-------------+--------+---------+----------+---------+ 

私はオブジェクトのリストには、このJSONをデシリアライズしていますが、フォーマットを変更することはできません。私はビューのようにテーブルをこのようにしたい:

+----------+-----+-------------+--------+ 
|   | New | In Progress | Closed | 
+----------+-----+-------------+--------+ 
| Denver | 2 |   1 |  12 | 
| Seattle | 0 |   2 |  2 | 
| New York | 3 |   5 |  1 | 
| El Paso | 0 |   1 |  3 | 
+----------+-----+-------------+--------+ 

私は複数のループとlinqを選択しようとしましたが、それを得ることができませんでした。 は、ここで私が持っているものです:

public class Response { 
    public string Status { get; set; } 
    public int Denver { get; set; } 
    public int Seattle { get; set; } 
    public int NewYork { get; set; } 
    public int ElPaso { get; set; } 
} 

public class ViewModel { 
    public string Name { get; set; } 
    public int New { get; set; } 
    public int InProgress { get; set; } 
    public int Closed { get; set; } 
} 

List<Response> response = service.GetData(); 
if (response != null) { 
    List<ViewModel> viewModels = response.Select(???); 
} 

return viewModels; 

誰かがこのselect文を正しい方向に私をポイントしてください。ありがとうございました!あなたはいつもあなたが行うことができ、都市の同じセットを持つことになりますと仮定

+1

は、固定された都市のセットですか?それとも変えることができますか? – Pedro

+0

都市名は2〜3つの都市名を追加したり削除したりすることがありますが、それは1年に1回しか起こりませんので、修正する予定はあります。 – chiiefs

答えて

0

var data = response.ToDictionary(x => x.Status, x => x); 

var viewModels = new [] 
{ 
    new ViewModel { Name = "Denver", New = data["New"].Denver, InProgress=data["In Progress"].Denver, Closed = data["Closed"].Denver }, 
    new ViewModel { Name = "Seattle", New = data["New"].Seattle, InProgress=data["In Progress"].Seattle, Closed = data["Closed"].Seattle }, 
    new ViewModel { Name = "New York", New = data["New"].NewYork, InProgress=data["In Progress"].NewYork, Closed = data["Closed"].NewYork }, 
    new ViewModel { Name = "El Paso", New = data["New"].ElPaso, InProgress=data["In Progress"].ElPaso, Closed = data["Closed"].ElPaso } 
} 
+0

これは素晴らしい作品です、ありがとうございます! – chiiefs

関連する問題