我有一个特定类型的IEnumerable(List<>)。 Type有一组属性,我想将其作为单个系列(MVC3 / Razor)绘制。
有没有办法可以将对象列表中的数据转换为属性列表?
e.g。 鉴于下面的代码,我试图实现的最终结果是一组系列,所以我有
Bucket1: IEnumerable<Date, Value>
Bucket2: IEnumerable<Date, Value>
etc
然后,我可以绘制每个系列的图表,以获得一个折线图,其中包含日期在x和y的值,对于(在此示例中)3个系列/行。这段代码完美无缺,但不知何故感觉不对?
var buckets = new List<Bucket>(){
new Bucket{
Date=DateTime.Today.AddDays(-3),
Bucket1=1000,
Bucket2=2000,
Bucket3=3000},
new Bucket{
Date=DateTime.Today.AddDays(-2),
Bucket1=1000,
Bucket2=2020,
Bucket3=3300},
new Bucket{
Date=DateTime.Today.AddDays(-1),
Bucket1=1000,
Bucket2=2040,
Bucket3=3600}
};
var chart = new Chart(){ Height = 400, Width = 600 };
var area = new ChartArea();
chart.ChartAreas.Add(area);
var series1 = chart.Series.Add("Bucket 1");
var series2 = chart.Series.Add("Bucket 2");
var series3 = chart.Series.Add("Bucket 3");
foreach (var series in chart.Series)
{
series.ChartType = SeriesChartType.Line;
}
foreach (var item in buckets)
{
series1.Points.AddXY(item.Date, item.Bucket1);
series2.Points.AddXY(item.Date, item.Bucket2);
series3.Points.AddXY(item.Date, item.Bucket3);
}
答案 0 :(得分:0)
如何为每个系列使用Lambda表达式(下面的代码未经过测试 - 它只是一个原型):
var series1 = buckets.Select(b => new { b.Date, b.Bucket1 });
var series2 = buckets.Select(b => new { b.Date, b.Bucket2 });
答案 1 :(得分:0)
感谢发布的评论,我保留了原始代码,并且认为没有更简单的方法来执行此操作。