У меня есть GridView, который заполняется из источника данных, как например:vb.net: Как присвоить значение списка переменных динамически
Date Hours
January/2016 26.31
January/2016 25.65
February/2016 12.3
.... ... ....
Из этой таблицы я проверяю в течение нескольких недель каждый месяц имел и посчитайте их, поэтому я могу получить среднее значение позже, это мой код.
For intMonth = 1 To 12
For X = 0 To GridView.Rows.Count - 1
intDate = Convert.ToDateTime(gvTiempos.Rows(X).Cells(0).Text)
If DatePart("m", intDate) = intMonth Then
Calcular()
End If
Next
Next
Это Calcular()
функция:
Public Function Calcular()
Select Case intMonth
Case 1: JanWeeks+=1
Case 2: FebWeeks+=1
...
Case 12: DecWeeks+=1
То, что я хотел бы сделать это, чтобы избежать всего Calcular()
функции, и сделать это «динамически».
Другими словами, я хотел бы получить что-то вроде этого:
Weeks(intMonth) = "Sum of Weeks for that month"
Где intMonth детерминированным, в котором WeekVariable Сумму будет хранить эту.
Я пробовал метод List(Of T)
неудачно, потому что это создает список переменных со статическим значением, согласно моему пониманию.
Заранее спасибо
Вы можете использовать словарь 'colMonths (intMonth) + = 1' Если у вас есть источник данных, вы должны использовать его, а не элемент управления. Вероятно, вы можете написать запрос linq и получить все 12 (?) Результатов сразу. Также похоже, что вы должны включить Option Strict – Plutonix
Возможно, вам лучше использовать массив. Затем просто используйте 'Weeks (intMonth) = Weeks (intMonth) + 1'. На боковой ноте вы можете исключить эту строку: 'intDate = GridView.Rows (X) .Cells (0) .Text'. Это значение не используется, и вы переназначаете его на следующей строке. – Icemanind
@Icemanind yep ypu правы в этой строке, только что отредактировав код, была ошибкой. О 'Weeks (intMonth) = Weeks (intMonth) + 1' эта ошибка: Индекс был за пределами допустимого диапазона. Должен быть неотрицательным и меньше размера коллекции. – abichango