我试着用以下两种方式排序数据表
table.DefaultView.Sort = "Town ASC, Cutomer ASC"
table.Select("", "Town ASC, Cutomer ASC")
但他们都不是没有工作排序的数据表。它始终以原始顺序显示数据。你有什么想法来解决这个问题。
我试着用以下两种方式排序数据表
table.DefaultView.Sort = "Town ASC, Cutomer ASC"
table.Select("", "Town ASC, Cutomer ASC")
但他们都不是没有工作排序的数据表。它始终以原始顺序显示数据。你有什么想法来解决这个问题。
设置在默认视图排序表达式(table.DefaultView.Sort = "Town ASC, Cutomer ASC"
),你应该循环比使用默认视图不是DataTable实例本身
foreach(DataRowView r in table.DefaultView)
{
//... here you get the rows in sorted order
Console.WriteLine(r["Town"].ToString());
}
使用DataTable代替选择方法的表,产生的DataRow的阵列后。这个数组排序从您的要求,而不是数据表
DataRow[] rowList = table.Select("", "Town ASC, Cutomer ASC");
foreach(DataRow r in rowList)
{
Console.WriteLine(r["Town"].ToString());
}
private void SortDataTable(DataTable dt, string sort)
{
DataTable newDT = dt.Clone();
int rowCount = dt.Rows.Count;
DataRow[] foundRows = dt.Select(null, sort);
// Sort with Column name
for (int i = 0; i < rowCount; i++)
{
object[] arr = new object[dt.Columns.Count];
for (int j = 0; j < dt.Columns.Count; j++)
{
arr[j] = foundRows[i][j];
}
DataRow data_row = newDT.NewRow();
data_row.ItemArray = arr;
newDT.Rows.Add(data_row);
}
//clear the incoming dt
dt.Rows.Clear();
for (int i = 0; i < newDT.Rows.Count; i++)
{
object[] arr = new object[dt.Columns.Count];
for (int j = 0; j < dt.Columns.Count; j++)
{
arr[j] = newDT.Rows[i][j];
}
DataRow data_row = dt.NewRow();
data_row.ItemArray = arr;
dt.Rows.Add(data_row);
}
}
试试这个:
Dim dataView As New DataView(table)
dataView.Sort = " AutoID DESC, Name DESC"
Dim dataTable AS DataTable = dataView.ToTable()
好,但是您应该建议这种方法创建一个重复的数据表,如果原始数据表很大,这不是非常有效 – Steve
这是我能找到,而无需创建任何新的排序数据表中的最短路径变量。
DataTable.DefaultView.Sort = "ColumnName ASC"
DataTable = DataTable.DefaultView.ToTable
其中:
ASC - 升序
DESC - 降序
的ColumnName - 要通过
的DataTable排序的列 - 要排序
表最适合我的解决方案就在这里。工作很快,我实际上已经将其纳入,以减轻数据库查询和执行排序客户端。要添加,请按逗号分隔多列,即:“Col1 ASC,Col2 DESC,Col3 ASC” – dya
它工作。感谢您的帮助 – pasanmaduranga