2013-04-05 72 views
0

我在我的系統上使用asp.net 2005並創建應用程序。我有一個日期格式排序的問題。我有一個包含三個字段的表格,如「用戶名,日期時間,訪問頁面」。日期格式排序問題

我這個記錄如下

user name  date time    visited page 
    xyz   4/4/2013 5:30:45 PM  aaa.aspx  
    xyz   4/4/2013 6:35:15 PM  aaa.aspx  
    xyz   4/4/2013 7:55:45 PM  aaa.aspx  
    xyz   4/4/2013 10:05:45 PM  aaa.aspx  
    xyz   4/4/2013 11:06:45 PM  aaa.aspx 

我想這個排序不使用Java腳本或jQuery的。 和輸出應該是

user name  date time    visited page  
xyz   4/4/2013 11:06:45 PM  aaa.aspx  
xyz   4/4/2013 10:05:45 PM  aaa.aspx  
xyz   4/4/2013 7:55:45 PM  aaa.aspx  
xyz   4/4/2013 6:35:15 PM  aaa.aspx  
xyz   4/4/2013 5:30:45 PM  aaa.aspx 

但我得到的輸出喜歡這個

user name  date time    visited page  
xyz   4/4/2013 7:55:45 PM  aaa.aspx  
xyz   4/4/2013 6:35:15 PM  aaa.aspx  
xyz   4/4/2013 5:30:45 PM  aaa.aspx 
xyz   4/4/2013 11:06:45 PM  aaa.aspx  
xyz   4/4/2013 10:05:45 PM  aaa.aspx 

我嘗試通過數據視圖,但它不能正常工作 任何一個可以幫我出這個問題來分類這一點。

+0

哪裏值是從哪裏來的? SQL?如果是這樣,請在那裏排序,而不是在客戶端上。 – jrummell 2013-04-05 13:40:34

+0

我正在使用.csv文件而不是任何sql。 – 2013-04-05 13:41:47

+0

當你說你「有一張桌子」...你的意思是你有一個內存中的數據表,或者你的意思是你有一個HTML表?什麼asp.net控件將用於創建html表格? – Penfold 2013-04-05 13:48:05

回答

1

還有許多其他的方法來讀取一個CSV,包括剛纔作爲原始文本文件和簡單的字符串解析。您可以在這裏使用其他答案中的一些建議,或者您可以將結果填充到DataTable中,或其他任何內容。使用任何你感到舒服的東西。

其他答案中未提及的重要一點是,您需要明確您正在閱讀的日期時間格式。例如,我怎麼知道1/2/2013代表1月2日或2月1日?

既然你有文件沒有使用不變的日期格式(如ISO8601爲例),那麼你應該某處明確規定的格式,如:

DateTime dt = DateTime.ParseExact(YourDateString, 
            "M/d/yyyy", // or "d/M/yyyy" 
            CultureInfo.InvariantCulture); 
1

將您的CSV設置爲ODBC源。然後,您必須使用Schema.ini並將該字段設置爲日期時間。請參閱鏈接:http://msdn.microsoft.com/en-us/library/ms709353.aspx

它應該解釋這一點。然後,一旦你做到了,可以做一個SQL查詢,並做了簡單的

SELECT * ORDER BY [date time] desc 

我個人討厭使用純文本文件,如果你可以使用DTS,並把它變成某種形式的關係型數據庫,即」 d是一個好的開始。

1

將您的.csv值讀入具有強類型DateTime屬性的對象,然後進行排序。

CsvValue[] values = ReadCsvFile().OrderBy(value => value.DateTime); 

哪裏CsvValue是

public class CsvValue 
{ 
    public string UserName {get; set;} 
    public DateTime DateTime {get; set;} 
    public string VisitedPage {get; set;} 
} 
+0

這是我在下面發佈之前想到的另一種方法。我正在建議LINQ,但它是.NET 2005,在它被介紹之前... – ApolloSoftware 2013-04-05 13:49:04