将Datetime的值与c#中的null或特定文本进行比较

时间:2017-01-06 19:12:54

标签: c# sql asp.net datetime

我想比较单元格(日期时间)值为空或"无"。如果它不为空或无,则在它之后将添加参数。我非常感谢您的帮助。

谢谢,它让我无法将日期时间转换为字符串错误

command.Parameters.AddWithValue("@pin", row.Cell(2).GetValue<string>());
command.Parameters.AddWithValue("@Amount", row.Cell(3).GetValue<int>());
 if(row.Cell(4).GetValue<DateTime>() == "" || row.Cell(4).GetValue<DateTime>() =="none")
{
}
command.Parameters.AddWithValue("@Expirydate", row.Cell(4).GetValue<DateTime>());
                            command.ExecuteNonQuery();

2 个答案:

答案 0 :(得分:1)

您可以通过解析如下来将DateTime和comapre转换为字符串

(DateTime.Parse(date).ToString()=="None" || DateTime.Parse(date).ToString()==String.Empty())?true:False

或者您可以使用try catch块来验证它。

答案 1 :(得分:0)

首先将其作为字符串读取,检查,然后将其转换为DateTime。

var s = row.Cell(4).GetValue<String>();
is (s != null && s != "" && s != "none")
{
    var d = DateTime.Parse(s);
    command.Parameters.AddWithValue("@Expirydate", d);
}

或重新考虑问题。而不是依赖于magic number,只需在有效日期填充到期日期,如下所示:

var s = row.Cell(4).GetValue<String>();
DateTime d;
if (DateTime.TryParse(s, out d))
{
    command.Parameters.AddWithValue("@Expirydate", d);
}

由于“none”和“”不是有效日期,这将有效,此外如果有人输入“无”,“N / A”,“从不”等,它将继续有效。