2016-09-26 56 views
1

我有一個C#程序,用於將數據從CSV文件讀取到DataTable中。這意味着生成的DataTable中的所有列都是字符串。然後我需要從DataTable中選擇與單個列中的共享值的條件相匹配的行的子集。這工作正常。C#在DataTable.Select語句中將字符串轉換爲日期/日期時間以進行排序選項

我的問題來了,我還需要返回設置排序的另一列是一個日期。我無法弄清楚如何在Select函數中設置排序參數的格式,以便將日期的字符串表達式轉換爲實際日期,以便排序正常工作。

這可以用Select語句來完成,還是需要採取另一種方法?

+0

如果datetime採用iso格式,則可以將其排序爲字符串。否則使用'DateTime.ParseExact(string,format)' – sed

+0

Stan,你的建議不起作用。我最終得到了一個代碼片段: dtDataTable.Select(「IDColumn ='222'」,DateTime.ParseExact(DateColumn,「d/M/yyyy」); 這會引發錯誤無法找到列DateTime.ParseExact(DateColumn ,. – user1753352

回答

0

這裏定義的類型是一件事,你可以試試。這將遍歷DataTable中的每一行,並從指定的列中獲取日期的String。它將使用TryParse將字符串轉換爲DateTime。如果成功,Row [0]將被設置爲DateTime。如果失敗,行[0]不會被改變。

我在下面的代碼列設置爲0,但你應該改變所有的0到任何列的日期時間是。

DateTime dateValue; 
foreach(DataRow row in dtDataTable.Rows){    
    if(DateTime.TryParse(row[0], out dateValue)){ 
    row[0] = dateValue   
    } 
} 

你可以找到的TryParse here更多信息。 TryParse可能有不可預知的行爲,所以爲了進一步控制,我建議一旦你得到這個工作,升級到TryParseExact

相關問題