Преобразование данных из дискретных свойств объектов в IEnumerable в массив / серию для построения диаграмм? - PullRequest
0 голосов
/ 05 октября 2011

У меня есть IEnumerable (List <>) определенного типа.Тип имеет набор свойств, которые я хотел бы отобразить как отдельные серии (MVC3 / Razor).

Есть ли способ, которым я могу перенести данные из списка объектов в список свойств?

например, учитывая приведенный ниже код, конечный результат, который я пытаюсь получить, представляет собой набор серий, поэтому у меня есть

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);
        }

Ответы [ 2 ]

0 голосов
/ 10 октября 2011

Благодаря комментариям я сохранил свой оригинальный код и не думаю, что есть более простой способ сделать это.

0 голосов
/ 05 октября 2011

Как насчет использования лямбда-выражения для каждой серии (приведенный ниже код не тестировался - это всего лишь прототип):

var series1 = buckets.Select(b => new { b.Date, b.Bucket1 });
var series2 = buckets.Select(b => new { b.Date, b.Bucket2 });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...