C#LINQ查询中的ToString转换
我在C语言中遇到了字符串比较(很可能是一个小问题)# 我正在运行这个LINQ查询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
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。你的评论很容易成为答案。不再需要字符串()了吗?