为什么不过滤数据库中的数据?

时间:2019-01-16 09:27:00

标签: c# list entity-framework linq

以字符串格式输入日期时,应使用“包含”在数据库中进行过滤,但它将返回null。可能是什么问题?

我将数据库中输出的字符串值与用户输入的字符串进行了比较,它们是完全相同的。

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

2 个答案:

答案 0 :(得分:1)

将字符串转换为日期,然后在比较中使用它 必要时进行条件过滤

DateTime.TryParse(searchclientregdate, out dateVar)



var find = fg.Users
    .Where(r => r.CreationDate<= dateVar && r.CreationDate>= dateVar)
    .ToList();

答案 1 :(得分:0)

如果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