如果声明 - 将datareader值与datetime进行比较

时间:2013-04-29 09:03:41

标签: c# if-statement sqldatareader

我希望你们可以帮助解决我遇到的一个小问题。在尝试检查datareader值是否小于指定的dateTime值并需要一些帮助时,我遇到了一些错误。

DateTime feedate = new DateTime(2013,09,01);
if (rsData["M_Start"] != DBNull.Value) & (Convert.ToDateTime(rsData["M_Start"]).ToString("yyyy/mm/dd") < feedate)

所以上面是我所拥有的,我得到的错误是唯一的赋值调用增量递减和新的对象表达式可以用作语句&#39;消息。

我有点难过,因为C#对我来说还是个新人,所以对任何帮助表示赞赏!

感谢。

2 个答案:

答案 0 :(得分:6)

  1. 您应该使用逻辑和&&而不是
  2. 您应该使用DataReader.IsDBNull代替
  3. 您不应该将DateTimeString进行比较,为什么要将其转换为字符串?

  4. DateTime feedate = new DateTime(2013, 09, 01);
    if (!rsData.IsDBNull(rsData.GetOrdinal("M_Start")) && (DateTime)rsData["M_Start"] < feedate)
    {
        // ...
    }
    

答案 1 :(得分:0)

你有错误的括号和'和'运算符。代码应为:

DateTime feedate = new DateTime(2013,09,01);
if (rsData["M_Start"] != DBNull.Value && Convert.ToDateTime(rsData["M_Start"]).ToString("yyyy/mm/dd") < feedate)
{
    // code
}

&运算符是按位运算符,或者&&运算符是逻辑运算符或。 if语句在括号中采用如下条件:if (… condition goes here …)

注意:正如Tim Schmelter在回答中指出的那样,还存在其他一些缺陷。