C# LINQ 查询中的 ToString 转换

本文关键字:ToString 转换 LINQ 查询 | 更新日期: 2023-09-27 18:31:13

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

我在这里做错了什么?

C# LINQ 查询中的 ToString 转换

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

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

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

请参阅附加的小提琴示例