Данные в реальном времени из базы данных
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();