2015-05-07 3 views
1

У меня есть цикл for, используя DateTime, я пытаюсь добавить точки к диаграмме, суммируя данные; Однако, при выполнении цикла я получаю эту ошибку:Как преобразовать DateTime в Int, он читает 'Недопустимый литой от' DateTime 'до' Int32 '?

InvalidCastException was unhandled: Invalid cast from 'DateTime' to 'Int32'.

Вот код в цикл Я пытаюсь:

List<Series> dataSeries = chartDailyCost.Series.ToList(); 
for (DateTime i = Convert.ToDateTime("00:00"); 
       i <= (Convert.ToDateTime("23:45")); 
       i = i.AddMinutes(15)) 
{ 
    double sum = 0d; 

    //for every series in the chart collection sum the yvalues at the specified 
    foreach (Series s in dataSeries) 
    { 
     //This is the line I am getting the error for 
     sum += s.Points[Convert.ToInt32(i)].YValues[0]; 
    } 
    DataPoint dp = new DataPoint(); 
    //Add a new yvalue to the datapoint for the summed series's 

    //And I will get an error in this one as well 
    dp.XValue = dataSeries[0].Points[Convert.ToInt32(i)].XValue; 

    dp.YValues[0] = sum; 
    sumSeries.Points.Add(dp); 
} 
+7

Позвольте мне знать, что вы ожидаете, что целое значение «23:45» (как DateTime) – Steve

+1

http://stackoverflow.com/questions/5788883/how-can-i-convert-a -datetime-to-an-int взгляните на это. Я не знаю, так ли это. – KooKoo

+0

Вопрос в том, как индексируется ваш массив точек. Это с 15-минутным шагом? Тогда я бы использовал int для i с 1 шагом в течение каждых 15 минут. Или это секунды? минут? часы? В структуре DateTime есть аксессоры для всех видов данных. – azt

ответ

1

Вы никогда не нужно DateTime, а то, что вы должны сделать, это петля над int, например, так:

const int intervalMinutes = 15; 
const int numIntervals = 24 * (60/intervalMinutes); 
for(int i = 0; i < numIntervals; ++i) 
{ 
    double sum = 0d; 

    //for every series in the chart collection sum the yvalues at the specified 
    foreach (Series s in dataSeries) 
    { 
     sum += s.Points[i].YValues[0]; 
    } 
    DataPoint dp = new DataPoint(); 
    //Add a new yvalue to the datapoint for the summed series's 

    //And I will get an error in this one as well 
    dp.XValue = dataSeries[0].Points[i].XValue; 

    dp.YValues[0] = sum; 
    sumSeries.Points.Add(dp); 
} 

Если вам нужен DateTime внутри вашего цикла, создайте его следующим образом:

DateTime dateTime = new DateTime().AddMinutes(intervalMinutes * i); 
+0

Эй, приветствует это, это имеет смысл, но когда я просматриваю каждую серию данных для числовых символов, как мне это сделать? Я пропустил строку кода, увиденную в первой строке редактирования, и это: Список dataSeries = chartDailyCost.Series.ToList(); приветствия за помощь! – Madison