如何在执行DataBind之前对DataSet进行排序?

tpo*_*wer 3 .net sorting data-binding dataset .net-2.0

我以数据的形式来自数据库DataSet.然后我DataSource在做之前将其设置为网格控件DataBind().我想排序DataSet/ DataTable上一列.该列是复杂的,以在数据库中排序,但我希望我可以排序,就像我将排序通用列表,即使用deligate.

这是可能的还是我必须将其转移到不同的数据结构?

编辑我无法得到任何这些答案为我工作,我想因为我使用.Net 2.0.

Mar*_*ell 6

由于DataTable(和DataView)排序的工作原理,您无法直接使用委托方法.一种解决方法是向表示顺序的数据表添加一列,并根据所需的顺序设置值(每行).然后,您可以在此新列的视图中添加排序.例如(使用LINQ进行排序,只是为了简洁):

var sorted = table.Rows.Cast<DataRow>().OrderBy(row => your code);
int sequence = 0;
foreach(var row in sorted)
{
    row["sequence"] = sequence++;
}
Run Code Online (Sandbox Code Playgroud)

(如果你有一个类型化的数据集,那么我认为你不需要Cast步骤,或者你会使用你输入的DataRow子类)

[编辑包括2.0]

在2.0(即没有LINQ等)你可以使用a List<T>进行排序 - 有点啰嗦,但是:

        List<DataRow> sorted = new List<DataRow>();
        foreach(DataRow row in table.Rows)
        {
            sorted.Add(row);
        }
        sorted.Sort(delegate(DataRow x, DataRow y) { your code });
        int sequence = 0;
        foreach(DataRow row in sorted)
        {
            row["sequence"] = sequence++;
        }
Run Code Online (Sandbox Code Playgroud)

(再次,如果您使用的是类型化数据集,请替换DataRow)