首页 > 解决方案 > 按我们想要的特定顺序对 DataTable 的行进行排序

问题描述

考虑我有两列的 DataTable

第 1 列 第 2 列
美国广播公司 一月
定义 十二月
中央银行 二月
bdf 十一月
啊啊啊 十二月

我有第 2 列的月份列表。我想根据月份对其进行排序

输出:

第 1 列 第 2 列
定义 十二月
啊啊啊 十二月
bdf 十一月
中央银行 二月
美国广播公司 一月

我尝试了什么:

string[] monthList = { "dec", "nov", "oct", "sep",,,, "feb", "jan"};
DataTable dataExistingTable
DataTable temp = new DataTable();
foreach(string month in monthList)
{
  var filteredData = dataExistingTable.AsEnumerable().Where(x => x["Column2"] == month);
  temp.Merge(filteredData.CopyToDataTable());
}

请提出一些更快/更好的方法!!!

标签: c#sortingdatatable

解决方案


添加基于表达式的列

dataExistingTable.Columns.Add("MonthNumber", typeof(int),
    "IIF ([Column2] = 'dec', 12, (IIF ([Column2] = 'nov', 11, (IIF ([Column2] = 'oct', 10, (IIF ([Column2] = 'sep', 9, 8)))))))");

然后对基于表达式的列应用排序

dataExistingTable.DefaultView.Sort = "MonthNumber desc";

然后表的 DefaultView 会给你排序的行。

// dataExistingTable.DefaultView;

推荐阅读