当您通过LINQ选择记录时,如何将字符串Date转换为DateTime?

问题描述 投票:0回答:1

我有一个表,其中包含用户在系统上执行的操作的完整历史记录。我需要以date descending顺序检索所有这些记录。问题是我在表格中保存了date格式的string,因为我的应用程序支持多文化。我不知道这是一个好主意还是坏事,现在我需要在日期descending订单中检索它们。因此,当我检索数据时,我正在尝试将date转换为DateTime格式,但我得到invalid date format的例外。在我的数据库中,日期是dd-MM-yyyy格式。以下是我的查询:

db.Histories.ToList.OrderByDescending(x=> Convert.ToDateTime(x.Date));
list entity-framework linq date-conversion
1个回答
0
投票

您的数据似乎不是所有有效的日期时间格式。我想你必须先清理数据。或者你可以这样排序:

    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);
        }
    }

无效的日期时间字符串将在排序列表中最后结束。

© www.soinside.com 2019 - 2024. All rights reserved.