Visual C #, массив дат между двумя датами - PullRequest
0 голосов
/ 02 мая 2018

У меня есть 2 DateTimePicker элементы управления с именами dtp1 и dtp2. Я хочу получить массив дат между этими 2 днями: dtp1.Date.Value <= x <= dtp2.Date.Value </strong>.

В настоящее время я использую цикл for для решения такой задачи, но это не очень эффективный способ выполнения действий:

int c = (int)(dtp2.Value.Date-dtp1.Value.Date).TotalDays + 1;
DateTime[] d = new DateTime[c];

for (int i = 0; i < c; i++)
{
    d[i] = dtp1.Value.Date.AddDays(i);
}

Есть ли лучший и лаконичный способ достижения того же результата?

1 Ответ

0 голосов
/ 02 мая 2018

Я советую вам использовать списки вместо массивов, и вы можете использовать Enumarable.Range

var startDate = new DateTime(2013, 1, 25);
var endDate = new DateTime(2013, 1, 31);
int days = (endDate - startDate).Days + 1; // incl. endDate 

List<DateTime> range = Enumerable.Range(0, days)
    .Select(i => startDate.AddDays(i))
    .ToList();

Вы можете узнать больше о списках здесь

...