将排序列表排序为数据表顺序

时间:2012-04-13 16:17:47

标签: c# datatable sortedlist

我从有序的数据表填充已排序的列表,但在填写排序列表后我的订单更改

     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

我的分类列表顺序变为7i,31e,32e,33e

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

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

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

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

  

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

如果您需要使用SortedList<T>,则必须以复杂的方式执行此操作,以便您可以参考用于订购数据的列中的值。有一些可能性。但我更倾向于改变对SortedList<T>的依赖。 为什么需要使用SortedList<T>如果您可以提供更多背景信息,我们可以帮助您解决更大的问题。你把它减少的小问题似乎过于复杂。