【问题标题】:How to Use OrderBy in linq for DataTable in asp.net如何在 linq 中为 asp.net 中的 DataTable 使用 OrderBy
【发布时间】:2014-07-14 12:53:44
【问题描述】:

我有两个数据表 Folder_table 和 folder_filter。这两个表都有两列 FolderNameFolderDateTime 。在 Folder_Table 我有如下值

FolderName   FolderDateTime

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

我正在使用以下编码将 2 行从 Folder_table 复制到 folder_filter

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

我想在FolderDateTime 列中降序排列。怎么做。请帮忙

【问题讨论】:

  • 试试巧妙命名的.OrderByDescending()方法?
  • 我是这样用的 folder_filter = Folder_table.Clone(); DataRow[] 结果 = Folder_table.Select("1=1", "FolderDateTime DESC"); for (var i = 0; i

标签: c# asp.net linq


【解决方案1】:

如果您的字段数据类型是DateTime,那么您可以使用:

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

如果您的列类型是string,那么首先您必须将这些值解析为DateTime 类型对象。将DateTime.ParseExactd\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

【讨论】:

    【解决方案2】:

    你可以使用

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

    【讨论】:

    • 它显示错误提示“指定的演员表无效”
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多