Linq c# 中的日期时间转换
DateTime conversion in Linq c#
我正在尝试编写一个查询 select 今天创建的所有数据。
这是我的要求:
public List<Projet> GetEnvoiMailBienvenueProjet(Site site)
{
var res =
_context.Projet.Where(
a =>
a.SiteId == site.SiteId && a.Client1.AdresseClient.EnvoiEmailBienvenue &&
a.Client1.AdresseClient.Email != null && a.Client1.AdresseClient.Email != "" &&
a.CreationDate.ToString("{0:MM/dd/yyyy}") == DateTime.Now.ToString("{0:MM/dd/yyyy}"));
return res.ToList();
}
我处理这个异常:
{"Method 'System.String ToString (System.String)' does not support the
translation into SQL."}
我已经尝试过其他可能性,所有时间都抛出这样的异常。
替换
a.CreationDate.ToString("{0:MM/dd/yyyy}") == DateTime.Now.ToString("{0:MM/dd/yyyy}")
和
a.CreationDate.Date == DateTime.Today
我建议您完全摆脱字符串转换:
DateTime today = DateTime.Today;
var res =
_context.Projet.Where(
a => ... && a.CreationDate == today);
或者可能(如果 a.CreationDate
也包含时间):
DateTime today = DateTime.Today;
var res =
_context.Projet.Where(
a => ... && a.CreationDate.Date == today);
当您真正对文本表示感兴趣时,您应该只使用字符串转换(解析或格式化)。在这里,您真正感兴趣的似乎只是比较日期组件 - 您绝对不需要为此进行字符串转换。
我正在尝试编写一个查询 select 今天创建的所有数据。
这是我的要求:
public List<Projet> GetEnvoiMailBienvenueProjet(Site site)
{
var res =
_context.Projet.Where(
a =>
a.SiteId == site.SiteId && a.Client1.AdresseClient.EnvoiEmailBienvenue &&
a.Client1.AdresseClient.Email != null && a.Client1.AdresseClient.Email != "" &&
a.CreationDate.ToString("{0:MM/dd/yyyy}") == DateTime.Now.ToString("{0:MM/dd/yyyy}"));
return res.ToList();
}
我处理这个异常:
{"Method 'System.String ToString (System.String)' does not support the translation into SQL."}
我已经尝试过其他可能性,所有时间都抛出这样的异常。
替换
a.CreationDate.ToString("{0:MM/dd/yyyy}") == DateTime.Now.ToString("{0:MM/dd/yyyy}")
和
a.CreationDate.Date == DateTime.Today
我建议您完全摆脱字符串转换:
DateTime today = DateTime.Today;
var res =
_context.Projet.Where(
a => ... && a.CreationDate == today);
或者可能(如果 a.CreationDate
也包含时间):
DateTime today = DateTime.Today;
var res =
_context.Projet.Where(
a => ... && a.CreationDate.Date == today);
当您真正对文本表示感兴趣时,您应该只使用字符串转换(解析或格式化)。在这里,您真正感兴趣的似乎只是比较日期组件 - 您绝对不需要为此进行字符串转换。