按升序或降序进行动态数据表排序
本文关键字:动态 数据表 排序 升序 降序 | 更新日期: 2023-09-27 18:21:45
我已经创建了动态表
DataTable date = new DataTable();
date.Columns.Add("date1");
并在列名"date1"中填入日期作为
date1(Column name)
05-07-2013
10-07-2013
09-07-2013
02-07-2013
并填写了我的动态表格
现在我希望这个动态表数据按升序或降序排序
For eg:
date1(Column name)
02-07-2013
05-07-2013
09-07-2013
10-07-2013
这不能用原始数据表完成。然而,您可以创建一个新的、排序的:
DataView view = date.DefaultView;
view.Sort = "date1 ASC";
DataTable sortedDate = view.ToTable();
您可以使用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();
我想我会在这里放弃我的两分钱。与其使用需要时间和计算性能的排序算法,不如颠倒向数据对象添加数据的方式。
这不会适用于每个人的场景,但对我自己来说,效果很好。
我有一个数据库,它按升序列出项目,但为了便于使用,我需要颠倒人们查看数据的方式(DESC),以便最新的输入显示在列表的顶部,而不是底部。
所以,我只是更改了for循环,所以它不是从0->向上工作,而是从数据表的长度开始(-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;
}
使用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>
}