【问题标题】:Unable to cast object of type 'System.DateTime' to type 'System.String'” error无法将类型“System.DateTime”的对象转换为类型“System.String””错误
【发布时间】:2023-04-03 03:57:01
【问题描述】:

我有这个代码:

 public bool GetHolidays(DataSet ds,List<string> dates,DataTable dt)
    {
        for (int i = 0; i <= dates.Count; i++)
        {
            bool weekOff = ds.Tables[0].AsEnumerable().Where(x=>(x.Field<string>("WeekOffDays")==dates[i]).ToString()).Any(); // error in this line

            if(weekOf)
               return true;

            return false;
        }
     }

我收到错误消息:

无法将“System.DateTime”类型的对象转换为“System.String”类型

为了克服这个问题,我尝试了:

   DateTime dateTime;
   bool weekOff = ds.Tables[0].AsEnumerable().Where(x=>DateTime.TryParse((x.Field<string> 
     ("WeekOffDays")==dates[i]).ToString(),out dateTime)).Any(); 

但错误仍然存​​在。

我尝试使用 DateTime,但是当我写它时,它给了我另一个错误提示

运算符 == 不能用于 DateTime 和字符串

请注意: WeekOffDays 列的类型为 datetime

如何解决?

【问题讨论】:

  • 尝试在第二个查询中将其更改为x.Field&lt;DateTime&gt;
  • 我试过了,但它给了我这个错误:Operator == cannot be used for DateTime and string
  • 是的,试试@HienNguyen 回答
  • WeekOffDays 类型是 varchar 还是 dateTime2?
  • 所以,尝试ds.Tables[0].AsEnumerable().Any(x =&gt; (x.Field&lt;DateTime&gt;("WeekOffDays")).ToString("dd/MM/yyyy") == dates[i]) bu 使用ToString()的正确格式

标签: c# linq


【解决方案1】:

你不需要toString在哪里,应该是

  bool weekOff = ds.Tables[0].AsEnumerable().Where(x => 
                    x.Field<string>("WeekOffDays") == dates[i]).Any();

这是我尝试在本地机器上重现的方法。

public bool GetHolidays(DataSet ds, List<string> dates, DataTable dt)
        {
            for (int i = 0; i <= dates.Count; i++)
            {
                bool weekOff = ds.Tables[0].AsEnumerable().Where(x => x.Field<string>("WeekOffDays") == dates[i]).Any(); // error in this line

                if (weekOff)
                    return true;
            }
            return false;
        }

【讨论】:

  • 这是我收到此错误的唯一原因吗?我之前尝试删除 ToString(),但遇到了同样的错误。
  • 仍然遇到同样的错误:无法将“System.DateTime”类型的对象转换为“System.String”类型。
猜你喜欢
  • 1970-01-01
  • 2017-07-30
  • 1970-01-01
  • 1970-01-01
  • 2014-02-03
  • 2012-09-07
  • 1970-01-01
  • 1970-01-01
  • 2014-03-14
相关资源
最近更新 更多