我試着用以下兩種方式排序數據表
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