Linq to SQL DateTime包含字符串



我正在尝试使用linq到sql将用户提供的部分字符串与可为null的日期时间进行匹配。我必须根据标准进行匹配,但我得到了一个linq-to-sql不支持.ToString((错误。

我尝试过的代码:

query.where(x => x.myDate.HasValue && x.myDate.Value.ToString().Contains(searchValue);

我也试着把它分成类似的部分:

query.where(x => x.myDate.HasValue && x.myDate.Value.Year.ToString().Contains(searchValue);

我想要的是用户键入一个部分日期时间字符串,如";202〃;它将检查年份、月份或日期的值是否为202(在这种情况下,它将过滤为仅显示2020年、2021年、2022年等的日期。

我希望用户输入日期的格式是2020-06-01。

我已经尝试了几种变体,但我很纠结,如果我可以对int进行部分匹配,那么我可以重新编写代码来逃脱惩罚,但无法完成简单的操作。ToString("yyyy-MM-dd"(在数据库中查找的日期时间非常有限。

我很感激你能提供的任何帮助,我已经在stackflow中查看了类似的问题,但我还没有找到可以使用的答案。

在这种情况下,您可能需要使用DbFunctions / EF.Functions

EF 6.2+(.NET Framework(

query.Where(x =>
x.myDate.HasValue &&
DbFunctions.Like(x.myDate.Value.ToString(), $"%{searchValue}%"));

EF Core(.NET Core(

query.Where(x =>
x.myDate.HasValue &&
EF.Functions.Like(x.myDate.Value.ToString(), $"%{searchValue}%"));

相关内容

  • 没有找到相关文章

最新更新