Почему данные в базе данных не фильтруются? - PullRequest
0 голосов
/ 16 января 2019

При вводе дат в строковом формате следует выполнить фильтрацию в базе данных с использованием Contains, но она возвращает ноль. В чем может быть проблема?

Я сравнил выходные значения String из базы данных со строкой, введенной пользователем, они абсолютно идентичны.

var find = fg.Users
    .Where(r => r.CreationDate.ToString().Contains(searchclientregdate))
    .ToList();

Ответы [ 2 ]

0 голосов
/ 16 января 2019

Если CreationDate является DateTime или DateTimeOffset, метод .ToString () может переформатировать его не так, как ожидалось. Если CreationDate уже является строкой, вам не нужно использовать метод .ToString (). Может быть, это поможет указать CultureInfo по вашему выбору, например CultureInfo.GetCultureInfo ("en-US"). Передача его в ToString заставит метод .ToString () по-разному форматировать ваш DateTime.

var find = fg.Users
    .Where(r => r.CreationDate.ToString(CultureInfo.GetCultureInfo("en-US")).Contains(searchclientregdate))
    .ToList();

РЕДАКТИРОВАТЬ: другой вариант - предварительно сохранить CultureInfo или создать DateTime / DateTimeOffset из входной строки.

Источник:

https://docs.microsoft.com/en-us/dotnet/api/system.globalization.cultureinfo?view=netframework-4.7.2

https://docs.microsoft.com/en-us/dotnet/api/system.globalization.cultureinfo.getcultureinfo?view=netframework-4.7.2

0 голосов
/ 16 января 2019

преобразовать строку в дату, а затем использовать ее в сравнении при необходимости сделать условную фильтрацию

DateTime.TryParse(searchclientregdate, out dateVar)



var find = fg.Users
    .Where(r => r.CreationDate<= dateVar && r.CreationDate>= dateVar)
    .ToList();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...