C# 实体框架:当我按确切的日期时间过滤时,我得到一个错误

C# 实体框架:当我按确切的日期时间过滤时,我得到一个错误,c#,asp.net,entity-framework,asp.net-core,asp.net-mvc-4,C#,Asp.net,Entity Framework,Asp.net Core,Asp.net Mvc 4,我正在使用实体框架,我想从数据库中过滤一些数据。当我尝试这样做时: 编辑:我希望按日期字段进行实时搜索。 如果我写了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.

我正在使用实体框架,我想从数据库中过滤一些数据。当我尝试这样做时:

编辑:我希望按日期字段进行实时搜索。
如果我写了10,输出必须:

包含10行的所有行。例如:

10.12.202010.10.202012.10.202012.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

如果我正确理解了您的数据模型,您应该使用以下内容:

DateTime birthdayForSearch = DateTime.ParseExact(birthday, "dd.MM.yyyy", CultureInfo.InvariantCulture).Date;
_db.SomeModel.Where(x => x.birthday.Date == birthdayForSearch)

如果我正确理解了您的数据模型,您应该使用以下内容:

DateTime birthdayForSearch = DateTime.ParseExact(birthday, "dd.MM.yyyy", CultureInfo.InvariantCulture).Date;
_db.SomeModel.Where(x => x.birthday.Date == birthdayForSearch)
请尝试以下代码:

    var sm = _db.SomeModel.ToList()
.Where(x => Convert.ToDateTime(x.birthday).ToString("dd.MM.yyyy").Contains(birthday));
请尝试以下代码:

    var sm = _db.SomeModel.ToList()
.Where(x => Convert.ToDateTime(x.birthday).ToString("dd.MM.yyyy").Contains(birthday));

您收到了什么错误消息?这些是本地化的字符串,不是精确的
DateTime
s。它们保证会导致转换错误。至于问题——这是学校的作业还是面试作业?没有人在生产环境中执行此类查询。没有人会检索1066年黑斯廷斯战役和1940年10月不列颠战役结束时的记录。您会收到什么错误消息?这些是本地化字符串,而不是精确的
DateTime
s。它们保证会导致转换错误。至于问题——这是学校的作业还是面试作业?没有人在生产环境中执行此类查询。没有人会去检索1066年黑斯廷斯战役和1940年10月英国战役结束的记录。不,它不起作用。它给出了无法翻译的
error@NAO,你能给我看看你现在的代码和型号吗?当我使用这些代码时,它是有效的。@NAO,使用
\u db.SomeModel.ToList()
而不是
AsQueryable()
。不,它不起作用。它给出了无法翻译的
error@NAO,你能给我看看你现在的代码和型号吗?当我使用这些代码时,它是有效的。@NAO,使用
\u db.SomeModel.ToList()
而不是
AsQueryable()