以字符串格式输入日期时,应使用“包含”在数据库中进行过滤,但它将返回null。可能是什么问题?
我将数据库中输出的字符串值与用户输入的字符串进行了比较,它们是完全相同的。
var find = fg.Users
.Where(r => r.CreationDate.ToString().Contains(searchclientregdate))
.ToList();
答案 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