在C#中排序后维护原始列表顺序

时间:2016-10-16 22:23:09

标签: c#-4.0

我想在排序后维护列表顺序。例如,用户输入2,4,7,1,0以添加到列表中。在列表中使用静态排序方法后,如何维护此顺序?我尝试使用冒泡排序方法并将原始列表复制到另一个列表变量中,但在将列表传递给下面的排序方法之后,它会对原始列表进行排序,即使它被复制到另一个列表变量中也是如此。

到底有没有?

   private List<int> sortedList(List<int> sortedGrads)
    {


        for (int i = 0; i < sortedGrads.Count - 1; i++)
        {
            for (int j = 0; j < sortedGrads.Count - 1 - i; j++)
            {
                if (sortedGrads[j] > sortedGrads[j + 1])
                {
                    int temp = sortedGrads[j];
                    sortedGrads[j] = sortedGrads[j + 1];
                    sortedGrads[j + 1] = temp;
                }
            }
        }
        return sortedGrads;
    }

1 个答案:

答案 0 :(得分:1)

要获取排序列表,请使用LINQ并将结果存储在其他变量中,并保持原始列表不变。

private List<int> sortedList(List<int> sortedGrads)
        {
            List<int> sortedElements = sortedGrads.OrderBy(x => x).ToList();

            //use any one from below
            return sortedGrads; //returns the original list
            return sortedElements; //returns the sorted list
        }