Данные в реальном времени из базы данных

 private void MapChart()
    {
        List<double> allValues = new List<double>();
        string day = null;

        if (CON.State == ConnectionState.Open)
        {
            CON.Close();
        }

        CON.ConnectionString = ConfigurationManager.ConnectionStrings["conDB"].ConnectionString;
        CON.Open();
        CMD = new SqlCommand("select * from tblWeeklyAudit", CON);
        RDR = CMD.ExecuteReader();
        while (RDR.Read())
        {
            allValues.Add(Convert.ToDouble(RDR["Defects"]));
            day = Convert.ToString(RDR["Day"]);
        }

        SeriesCollection = new SeriesCollection
        {
            new LineSeries
            {
                Values = new ChartValues<double>(allValues)
            }
        };

        Labels = new[] { "Day 1", "Day 2", "Day 3", "Day 4" };

        DataContext = this;
    }

Я хочу знать, как получить значения в переменной дня внутри этого.

Labels = new[] { "Day 1", "Day 2", "Day 3", "Day 4"};

Количество нет. дней может отличаться. Я делаю это как мой проект для моей степени.

1 ответ

Решение

Предполагая, что вы хотите значение RDR["Day"] для каждой записи в хранилище данных, которая будет добавлена ​​в массив / коллекцию, и значение RDR["Day"] это что-то вроде Day1 или же Day2 или же DayN для каждой записи вы можете создать список строк вне вашего цикла и добавить к нему внутри вашего цикла.

Подобно тому, что вы сделали в allValues список.

var dayLabels= new List<string>();
while (RDR.Read())
{
   allValues.Add(Convert.ToDouble(RDR["Defects"]));
   var d= RDR.GetString(RDR.GetOrdinal("Day"));     
   dayLabels.Add(d);
}

Вы также можете выполнять большинство общих операций с массивом (перечисление через него, получение элемента из определенного индекса и т. Д.) Со списком. Если вы абсолютно хотите массив из этого списка, вы можете вызвать ToArray метод в списке, чтобы получить это

var myArray = dayLabels.ToArray();
Другие вопросы по тегам