c# - 实体框架:当我按确切的日期时间过滤时,出现错误
问题描述
我正在使用实体框架,我想从数据库中过滤一些数据。当我尝试这样做时:
编辑:我想按日期字段进行实时搜索。
如果我写 10 输出必须:
生日包含 10 的所有行。例如:
10.12.2020 , 10.10.2020 , 12.10.2020 , 12.12.2010
我试过了
1) var sm = _db.SomeModel.Include(d => d.OtherModel).AsQueryable();
sm.Where(x => x.birthday.toString("dd.MM.yyyy").contains(birthday));
2) var sm = _db.SomeModel.Include(d => d.OtherModel).AsQueryable();
sm.Where(x => EF.Functions.Like(x.birthday.toString("dd.MM.yyyy"), $"%{birthday}%"));
我的模型:
public partial class Customer
{
public int Id {get; set;}
public int ContactInfoId {get; set;}
public string Lastname {get; set;}
public string Firstname {get; set;}
public DateTime? Birthday {get; set;}
public ContactInfo Contact {get; set;}
}
public partial class ContactInfo
{
public int Id {get; set;}
public int TypeId {get; set;}
public string Email {get; set;}
public EmailType Type {get; set;}
}
public partial class EmailType
{
public int Id {get; set;}
public string value {get; set;}
}
和我的控制器
var cust = _db.Customer.Include(e => e.ContactInfo).ThenInclude(e => e.EmailType).OrderBy(e => e.Lastname).AsQueryable();
cust = cust.Where(d => !d.Birthday.HasValue || (Convert.ToDateTime(d.Birthday).ToString("dd.MM.yyyy").Contains(birthday.toString)));
我收到一个 SQL 错误。
如何按确切的日期时间格式过滤?
错误是
.Where(c => !(c.Outer.Outer.Outer.Birthday.HasValue) || Convert.ToDateTime((objet)c.Outer.Outer.Outer.Birthday).ToString("dd.MM.yyyy").Contains() couldnt be translated
解决方案
试试这个代码:
var sm = _db.SomeModel.ToList()
.Where(x => Convert.ToDateTime(x.birthday).ToString("dd.MM.yyyy").Contains(birthday));
推荐阅读
- toolchain - 究竟什么是工具链?
- sql - 获取所有员工逾期的所有项目 - SQL 查询
- java - Spring Boot 2 Hibernate 5 @Embeddable 属性在 H2 中生成错误的字段大小(create-drop)
- haskell - Haskell,typesig Map.Map,LYAH
- java - 接口是否提供完整的抽象?如何?
- bash - 如何使用环境变量集自动调用脚本
- php - 当 laravel 中的单元测试失败时,响应不是视图消息
- sql - 连接两个表后使用 NOT IN 关键字
- python - 获取名称错误名称'sentence_stream'未定义
- c# - WFA 如何获取文本框中插入符号所在的行号