2013-07-26 144 views
-3

我有一個數據集ds,我需要根據列對相同ds的數據標籤進行排序,並且列名是Date。此列中的值爲'dd MMM yyyy'格式。根據日期列對數據表進行排序(dd MMM yyyy)

+0

http://stackoverflow.com/a/14031086/1134076 <這不是你在找什麼 –

+0

一個問題,這是請求。沒有代碼,沒有努力只是規範。 – wudzik

+0

[你如何對DataTable給定列和方向進行排序?](http://stackoverflow.com/questions/5005658/how-do-you-sort-a-datatable-given-column-and-direction) – Ankur

回答

-1

這將是一個問題,特別是如果它是一張大桌子。當然,最好的答案是將該列重新定義爲日期類型。這樣它就可以高效地排序和加入。但是,如果表格不大,則可以將日期字符串重新格式化爲ISO格式(YYYY-MM-DD),並且它會正確排序。你沒有提到你使用哪個數據庫,字符串和日期功能的平臺不同而不同:這裏有一個SQL Server實例:

SELECT CAST([Date] AS Date) AS real_date, 
     my_other_fields 
    FROM MyTable 

我在家的時候,所以我沒有一個SQL Server測試(現在我可以在早上更新這個例子,如果它不起作用),但是那個日期格式對於解析是非常明確的,所以我希望演員們能夠正常工作。

如果你想完全在應用程序方面處理這件事,那麼編寫一個字符串函數將會重新排列日期字符串中的年份,月份和日期應該相當簡單。

+1

事實上,我使用的是sql server 2008. –

+0

@AnuBasheerA我已經爲我的答案添加了一個片段:我很確定它會按照書面方式工作,但一旦我回到辦公室後會立即確認。 – Curt

+0

@AnuBasheerA而且,經過檢查,演員陣容工作得很好(只要字符串格式良好)。 – Curt

0

如果你不能改變列類型爲日期,然後嘗試LINQ的解決方案如下

var recs = dataset.Tables[0].AsEnumerable() 
    .OrderBy(x =>DateTime.ParseExact(
      x.Field<string>("Date"), 
          "dd MMM yyyy", 
          CultureInfo.InvariantCulture)); 
+0

你在這裏有一個錯字,應該是dd MM yyyy和DateTime.ParseExact():)好的回答 –

+0

@Onam對不起,我沒有找到你 – Damith

+0

看看你將它轉換爲dd MMM yyyy的日期格式。注意代表一個月的3個字符。另外DateTime.ParaseExact拼寫錯誤,只是注意到CultureInfo.InvariantCultur需要CultureInfo.InvariantCulture(注意'e'結尾)。除此之外:) –

相關問題