-1

我从有序数据表中填充排序列表,但在填充排序列表后,我的订单发生了变化

     for (int i = 0; i < d.Rows.Count; i++)
        {
              int EmpID = Convert.ToInt32(d.Rows[i]["Fd_Emp"].ToString().Trim());
            string type=d.Rows[i]["Fd_Type"].ToString().Trim();
            emp.Add(EmpID, type);

        }

我的数据表顺序是 31e,32e,33e,7i

我的 sortedlist 顺序变为 7i,31e,32e,33e

如何将我的数据表顺序保留在排序列表中

4

2 回答 2

1

使用排序列表的想法是它使添加的元素保持排序顺序。这意味着如果数据库中的元素未排序(或排序方式与排序列表排序不同),排序列表中的元素将具有不同的顺序

如果 DB 中的值已排序,并且您希望从排序列表中获得相同的排序,则可以为元素提供自定义排序方法,在其中复制 DB 用于其值的比较逻辑。

于 2012-04-13T16:22:48.637 回答
0

该类SortedList<T>根据您提供的比较函数对元素进行排序,或者,如果您不提供比较函数,则根据该类型的默认比较器对元素进行排序。但是,您的排序逻辑取决于不在排序列表中的数据(您说“我按另一列排序查询)。因此您无法对列表进行排序。

该类List<T>包含一个有序的元素序列;顺序是添加它们的顺序。换句话说,List<T>将使元素保持相同的顺序。由于您希望元素保留从数据库中检索它们的顺序,因此您应该使用List<T>.

不抱歉,但我有我的逻辑,所以我必须使用排序列表

如果您需要使用,SortedList<T>那么您将不得不以复杂的方式进行操作,以便您可以参考用于对数据进行排序的列中的值。有几种可能性。但我更倾向于改变对SortedList<T>. 为什么需要使用SortedList<T> 如果您能提供更多背景信息,我们或许可以帮助您解决更大的问题。您将其简化为的较小问题似乎过于复杂。

于 2012-04-13T16:44:55.603 回答