2013-04-29 74 views
2

我希望你們可以幫助我有一個小問題。在嘗試檢查數據傳遞者值是否小於指定的dateTime值並需要一些幫助時,我收到了一些錯誤。如果聲明 - 比較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) 

所以上面的是我和我得到的錯誤是「唯一的任務調用增量遞減和新對象的表達式可以作爲一個聲明」的消息。

我有點難住,因爲C#對我來說還真是新鮮事,所以任何幫助表示讚賞!

謝謝。

+0

'&'和''&&是兩個不同的運營商...... – Sachin 2013-04-29 09:07:42

回答

6
  1. 您應該使用邏輯和&&代替
  2. 您應該使用DataReader.IsDBNull代替
  3. 你不應該比較有String一個DateTime,你爲什麼把它轉換成字符串呢?

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

感謝您的意見 - 這是比我的做法更合理,我會把它計算入一些其他的東西我正在做。 – PipBoy 2013-04-29 09:37:26

+0

@PipBoy:請注意,如果您只想比較日期部分,則可以使用['DateTime.Date'](http://msdn.microsoft.com/zh-cn/library/system.datetime.date.aspx) 。該屬性返回給定'DateTime'的午夜。 – 2013-04-29 10:00:00

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在他的回答中指出的那樣,還有其他一些缺陷。