我有一个表,其中包含用户在系统上执行的操作的完整历史记录。我需要以date
descending
顺序检索所有这些记录。问题是我在表格中保存了date
格式的string
,因为我的应用程序支持多文化。我不知道这是一个好主意还是坏事,现在我需要在日期descending
订单中检索它们。因此,当我检索数据时,我正在尝试将date
转换为DateTime
格式,但我得到invalid date format
的例外。在我的数据库中,日期是dd-MM-yyyy
格式。以下是我的查询:
db.Histories.ToList.OrderByDescending(x=> Convert.ToDateTime(x.Date));
您的数据似乎不是所有有效的日期时间格式。我想你必须先清理数据。或者你可以这样排序:
var tmp = array.OrderByDescending(x => ParseDate(x.DateTest));
private static DateTime ParseDate(string dateString)
{
var dateFormats = new[]
{"dd-MM-yyyy", "dd/MM/yyyy", "M/d/yyyy", "d.M.yyyy", "dd.MM.yyyy", "MM/dd/yyyy", "M/d/yyyy"};
try
{
return DateTime.ParseExact(dateString, dateFormats, CultureInfo.CurrentCulture,
DateTimeStyles.None);
}
catch (Exception ex)
{
return DateTime.Now.AddYears(-500);
}
}
无效的日期时间字符串将在排序列表中最后结束。