动态数据表格按升序或降序排序

8
我已经创建了动态表格。
 DataTable date = new DataTable();
 date.Columns.Add("date1");

并将“date1”列的名称填充为日期
date1(Column name)
05-07-2013
10-07-2013
09-07-2013 
02-07-2013 

我希望你能帮忙翻译,“and made fill my dynamic table”的意思是填充我的动态表格。

现在,我希望这个动态表格数据可以按照升序或降序排序。

For eg:

date1(Column name)
02-07-2013
05-07-2013
09-07-2013 
10-07-2013 
4个回答

12

这无法通过原始数据表完成。但是你可以创建一个新的排序表:

DataView view = date.DefaultView;
view.Sort = "date1 ASC";
DataTable sortedDate = view.ToTable();

5
你可以使用 DataTable.Select(filterExpression, sortExpression) 方法。

在指定排序顺序中,获取所有符合筛选条件的 DataRow 对象数组。

date.Select("", "YourColumn ASC");

或者

date.Select("", "YourColumn DESC");

作为替代方案,你可以使用 DataView,例如:;
DataView view = date.DefaultView;
view.Sort = "YourColumn ASC";
DataTable dt = view.ToTable();

1

我想在这里提供我的两分钱建议。与其使用需要时间和计算性能的排序算法,为什么不改变向数据对象添加数据的方式呢。

这种方法并不适用于每个人的情况 - 但对于我自己来说,它完美地解决了问题。

我有一个数据库,其中按升序列出物品,但为了方便使用,我需要反转人们查看数据的方式(DESC),以便最新的输入显示在列表顶部而不是底部。

所以,我只需更改我的for循环,使其从datatable的长度开始(-1以防止溢出),并在达到0时停止;

private Dictionary<string, string> GetComboData(string table, int column, bool id, int idField = 0)
{
    SqlClass sql = new SqlClass(database);
    Dictionary<string, string> comboBoxData = new Dictionary<string, string>();

    if (sql.connectedToServer)
    {
        sql.SelectResults(SQLCommands.Commands.SelectAll(table));

        for (int i = sql.table.Rows.Count-1; i >= 0; i--)
        {
            string tool = sql.table.Rows[i].ItemArray.Select(x => x.ToString()).ToArray()[column];
            string ID = sql.table.Rows[i].ItemArray.Select(x => x.ToString()).ToArray()[idField];

            comboBoxData.Add(ID, tool);
        }

    }

    return comboBoxData;
}

0

使用 OrderByDescending()

          @foreach (var rca in Model.OrderByDescending(x=>x.Id))
            {
                <tr class="heading">

                    <td>@rca.PBINo</td>

                    <td>@rca.Title</td>

                    <td>@rca.Introduction</td>

                    <td>@rca.CustomerImpact</td>

                    <td>@rca.RootCauseAnalysis</td>
               </tr>
             }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接