2

チャートデータ

public class ChartData {
    public Series[] Series { get; set; }
}

シリーズ

public class Series{
    public Strind Name { get; set; }
    public Data Data { get; set; }
}

データ

public class Data {
    public object[] Points { get; set; }
}

記録

 Date | Name | Value

date1 | T1  |    15
date1 | T2  |    20
date2 | T1  |    25
date2 | T2  |    30
date3 | T1  |    35
date3 | T2  |    40

そしてlinqコード

(from d in MeterReadings
 group d by new { name = d.Name } into g
 select new ChartData
 {
     Series = (from s in g
              select new Series
              {
                  Name = g.Key.name,
                  Data = new Data(new object[] { g.Select(x => x.Value) })
              }).ToArray()
     }).FirstOrDefault();

期待される:

Name = T1 , Data = 15, 25, 35
Name = T2 , Data = 20, 30, 40

しかし出力:

Name = T1 , Data = 15, 25, 35
Name = T1 , Data = 15, 25, 35
Name = T1 , Data = 15, 25, 35

期待される正しいコードが見つかりません。linq コードを確認していただけますか。どこで間違ったことをしましたか?

前もって感謝します。

4

1 に答える 1

1

ChartData問題は、グループごとに新規を選択してから、最初に取得することです。このコードを試してください:

var series =  MeterReadings.GroupBy(x => x.Name)
                           .Select(g => new Series
                            {
                                Name = g.Key,
                                Data = new Data {Points = g.Select(x => x.Value).ToArray()}
                            })
                           .ToArray();
var chartData = new ChartData {Series = series};
于 2012-11-10T10:02:05.890 に答える