2012-08-12 110 views
0

我試圖測試一下工作人員的月份是否等於從他們開始工作到現在的3個月。而這正是我試圖使用方法:startIndex不能大於c中字符串的長度#

int totalMonth = 3; 
int totalYear = 0; 
int mon = DateTime.Now.Month; 
int yr = DateTime.Now.Year; 
//block of code that I used LinQ to Entity to get staff start work date 
result = result.Where(((s => mon - int.Parse(s.StartDate.Substring(3, 2).ToString()) == totalMonth && yr -int.Parse(s.StartDate.Substring(6, 4).ToString()) == totalYear))).ToList(); 

日起在我的數據庫格式07/05/2012但我得到的錯誤:

startIndex cannot be larger than length of string. Parameter name: startIndex 

可以在任何一個可以告訴我,我怎麼錯在這裏?先謝謝了。

+1

您的代碼適用於名爲result的變量。但我們無法看到這種類型或其當前價值。你能詳細解釋一下嗎? – Steve 2012-08-12 12:35:30

回答

1

日期在我的數據庫的格式是07月05

最有可能的日期存儲爲二進制,沒有格式。在列出記錄時看到的內容可能與C#中發生的不同。

使用調試器來找出result.First().StartDate的實際外觀。可能是"5-7-12"

+0

但數據類型是'varchar(50)'而不是'date'。 – Nothing 2012-08-12 12:36:26

+1

你是否允許NULL日期?因爲至少有一個記錄少於6個字符。 – 2012-08-12 12:37:44

+1

@socheata這是你的根本問題。您應該將日期存儲爲日期,而不是字符串。 – 2012-08-12 12:42:56

相關問題