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 回答