2014-07-14 60 views
1

我有兩個數據表Folder_table和folder_filter。這兩個表都有兩列FolderNameFolderDateTime。在Folder_Table我有一個像下面如何在linq中使用OrderBy在asp.net中爲DataTable

FolderName FolderDateTime 

Test1  29/3/2014 
Test2  20/12/2014 
Test3  4/2/2014 
test5  9/6/2014 

我使用下面的代碼複製從Folder_table 2行中的值來folder_filter

folder_filter = Folder_table.Rows.Cast<System.Data.DataRow>().Take(2).CopyToDataTable(); 

我想在FolderDateTime列降序訂購。怎麼做。請幫助

+0

嘗試巧妙地命名爲'.OrderByDescending()'方法? – Basic

+0

我用這種方式folder_filter = Folder_table.Clone(); DataRow [] results = Folder_table.Select(「1 = 1」,「FolderDateTime DESC」); for(var i = 0; i <4; i ++) folder_filter.ImportRow(results [i]);現在它的工作..謝謝你 – user3734234

回答

7

如果字段數據類型爲DateTime那麼你可以使用:

var sortedTable = Folder_table.AsEnumerable() 
       .OrderBy(r => r.Field<DateTime>("FolderDateTime")) 
       .CopyToDataTable(); 

如果你的列類型是string那麼首先你必須將這些值解析到DateTime類型的對象。使用DateTime.ParseExact與格式d\M\yyyy像:

var sortedTable = Folder_table.AsEnumerable() 
       .OrderBy(r => DateTime.ParseExact(r.Field<string>("FolderDateTime"), 
                "d/M/yyyy", CultureInfo.InvariantCulture)) 
       .CopyToDataTable(); 

你應該看到:LINQ to DataSet/ DataTable - MSDN

0

可以使用

var sortTable = Folder_table.AsQueryable().OrderBy(r => r.FolderDataTime).ToList(); 
+0

它顯示錯誤說'指定的演員無效' – user3734234

相關問題