gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 07:49:54 25 4
gpt4 key购买 nike

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

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

编辑 我认为这些答案中的任何一个都无法为我工作,我想是因为我正在使用 .Net 2.0。

最佳答案

由于 DataTable(和 DataView)排序的工作原理,您不能直接使用委托(delegate)方法。一种解决方法是向数据表中添加表示订单的列,并根据所需的顺序设置值(每行)。然后,您可以将排序添加到此新列的 View 中。例如(为了简洁起见,使用 LINQ 进行排序):

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

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

[编辑以包括 2.0]

在 2.0(即没有 LINQ 等)中,您可以使用 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++;
}

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

关于.net - 如何在执行 DataBind 之前对 DataSet 进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/228875/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com