Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#LINQ查询中的ToString转换_C#_Linq_Datetime - Fatal编程技术网

C#LINQ查询中的ToString转换

C#LINQ查询中的ToString转换,c#,linq,datetime,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.ToStri

我在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

我做错了什么

您可以使用
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;

我不会通过将日期转换为字符串来牺牲日期的类型安全性-可能发生的情况是,
ToString()
正在通过数据库中的
CAST
/
CONVERT
转换为*Char类型,这会导致不同的格式。我会这样做:

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

不要将
DateTime
属性的
ToString()
输出与另一个日期字符串进行比较,而是将日期字符串解析为
DateTime
并进行
DateTime
比较。@BenRobinson。你的评论很容易成为答案。不再需要字符串()了吗?