C#LINQ查询中的ToString转换

时间:2014-11-19 13:08:39

标签: c# linq datetime

我在C#

中使用字符串比较(很可能是一个微不足道的问题)

我正在运行此LINQ查询

var result = from q in Table
             where q.ValueDate.ToString() == "12/11/2014 12:00:00 AM"
             select q;

并获得空回复

然而,当我尝试

foreach (var i in Table)
{
    Console.WriteLine(i.ValueDate.ToString());
}

我得到了

12/11/2014 12:00:00 AM
12/11/2014 12:00:00 AM
12/11/2014 12:00:00 AM
12/11/2014 12:00:00 AM

我在这里做错了什么?

2 个答案:

答案 0 :(得分:3)

我不会通过将Date转换为字符串来牺牲Date的类型安全性 - 可能发生的事情是ToString()通过CAST / {{转换为* Char类型DB中的1}},导致格式不同。我就是这样做的:

CONVERT

答案 1 :(得分:0)

您可以使用DateTime对象而不是字符串比较:

DateTime filter = new DateTime(2014,12,11);
var result = from q in Table
              where q.ValueDate == filter)
              select q

或尝试指定日期格式:

var result = from q in Table
              where q.ValueDate.ToString("dd/MM/yyyy hh:mm:ss tt") == "12/11/2014 12:00:00 AM"
              select q;

See Attached Fiddle Example