2017-02-13 8 views
0

サーバーからハイチャートのデータを提供したい。 は、私は以下のようなデータテーブルを持っている:ハイチャート用にDataTableを配列に変換する

DAY TIP RESULT 
1 0 1 
1 2 53 
2 2 3458 
3 2 4197 
3 0 495 
4 2 5084 
5 2 3408 
6 NULL 22 
6 0 2242 
7 2 38 

は、どのように私は、このデータテーブルから適切なデータを取得することができますか? 私はこれまでに2つのforeachループを試しました。これに対してより効率的な方法がありますか?

は最後に、私は以下のようなデータを持つようにしたい:

Days = [1,2,3,4,5,6,7] 

RESULT for each TIP due to days 

{ name: '0', 
    data: [1,0,495,0,0,2242,0] 
}, 
{ name: 'NULL', 
    data: [0,0,0,0,0,22,0] 
}, 
{ name: '2', 
    data: [53,3458,4197,5084,3408,0,38] 
} 

答えて

1

はい、あなたは、このためにLINQを使用することができます。

//Prepare 
var items = new List<C1>(); 
items.Add(new C1 { Day = 1, Tip = 2, Result = 2000 }); 
items.Add(new C1 { Day = 1, Tip = 1, Result = 3000 }); 
items.Add(new C1 { Day = 2, Tip = 3, Result = 4000 }); 
items.Add(new C1 { Day = 2, Tip = 4, Result = 5000 }); 
items.Add(new C1 { Day = 2, Tip = 4, Result = 8000 }); 

//Group the days 
var days = items.GroupBy(o => o.Day).Select(o => o.Key).ToList(); 

//Group the data on Tip 
var tip = items.GroupBy(o => o.Tip, o => o.Result, (key, g) => new { Name = key, Data = g.ToList() }).ToList(); 

クラスC1

public class C1 
{ 
    public int Day { get; set; } 
    public int Tip { get; set; } 
    public int Result { get; set; } 
} 
関連する問題