IEnumerable преобразовать в IEnumerable

#c# #.net #type-conversion

Вопрос:

Добрый день! У меня есть следующий блок, когда:

 var userDateReg = DB.Users.Select(u => u.DateLastVisit - u.DateRegistration).ToArray()
                          .Select(i => i.TotalDays);
return userDateReg;
 

Я хочу вернуться IEnumerable<DateTime> вместо того, чтобы IEnumerable<double>

Комментарии:

1. Вычитание дат — это не дата, это TimeSpan то, что вы получаете в эти дни. удалите .Select(i => i.TotalDays) , и вы получите TimeSpan

2. …и TimeSpan.TotalDays будут такие значения, как 10, 16, 175, которые трудно преобразовать в дату или промежуток времени

Ответ №1:

Вычитание дат-это не дата, это промежуток времени, который вы получаете в днях. удалите .Select(i => i.TotalDays) , и вы получите промежуток времени:

 var userDateReg = DB.Users.Select(u => u.DateLastVisit - u.DateRegistration).ToArray();
                          
 

Обратите внимание, что userDateReg это массив TimeSpan (продолжительность), к которому вы можете получить доступ, это дни, часы,….

если вы хотите получить строку, которая выглядит как длительность:

 var userDateReg = DB.Users.Select(u => (u.DateLastVisit - u.DateRegistration).ToString(@"d.hh:mm:ss")).ToArray();
 

теперь userDateReg будет представлять собой массив строк, который выглядит следующим образом: 3.11:49:25