Linq中的DateTime转换c#

时间:2015-05-20 09:00:08

标签: c# linq linq-to-sql

我试图编写一个查询,选择今天创建的所有数据。

这是我的要求:

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();
        }

我处理这个例外:

  

{&#34; Method&#39; System.String ToString(System.String)&#39;不支持   转换为SQL。&#34;}

我已经尝试了其他可能性,所有时间都会抛出这样的异常。

2 个答案:

答案 0 :(得分:3)

我建议您完全摆脱字符串转换:

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);

当您真正对文本表示感兴趣时,您应该只使用字符串转换(解析或格式化)。在这里,您似乎真正感兴趣的是比较日期组件 - 您绝对不需要字符串转换。

答案 1 :(得分:0)

替换

a.CreationDate.ToString("{0:MM/dd/yyyy}") == DateTime.Now.ToString("{0:MM/dd/yyyy}")

a.CreationDate.Date == DateTime.Today