Linq与日期比较不起作用

时间:2015-10-21 11:46:03

标签: c# linq datetime-comparison

我需要使用LINQ将两个日期范围与记录列表进行比较,并且出于某种原因我陷入了困境。我收到字符串格式的日期,我将转换为DateTime。我知道数据库中的特定日期范围内有数据,所以我应该回来记录。

public static string FilterStudentListInRelationToStaffByDateRange(
    string GivenStaffID, 
    string SelectFilterOption, 
    string FromDate, 
    string ToDate)
{ 
    var dt = DateTime.Parse(FromDate);
    // var fff = String.Format("{0:d/M/yyyy hh:mm:ss}", dt);

    var dt3 = DateTime.Parse(ToDate);
    //var fff3 = String.Format("{0:d/M/yyyy hh:mm:ss}", dt3);

    var x = (from b in queryList
            where b.RelationshipDateStart >= dt && b.RelationshipDateEnd <= dt3
            select b).ToList();

1 个答案:

答案 0 :(得分:1)

日期/时间解析可能很烦人,特别是如果您处理不同的格式。

如果您知道格式,可以尝试使用DateTime.ParseExact

CultureInfo provider = CultureInfo.InvariantCulture;
string format = "d/M/yyyy hh:mm:ss";

try 
{
    var dt = DateTime.ParseExact(FromDate, format, provider);

    var dt3 = DateTime.ParseExact(ToDate, format, provider);

    var x = (from b in queryList
            where b.RelationshipDateStart >= dt && b.RelationshipDateEnd <= dt3
            select b).ToList();

}
catch (FormatException) 
{
     Console.WriteLine("Date is not in the correct format.");
}