Linq с датой сравнения не работает

Мне нужно сравнить два диапазона дат со списком записей, используя 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 ответ

Парсинг даты / времени может раздражать, особенно если вы работаете с разными форматами.

Если вы знаете формат, вы можете попробовать использовать 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.");
} 
Другие вопросы по тегам