#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