我正在尝试在C#中按字母顺序对字符串列表进行排序。我的代码如下所示:

public static List<Result> sort(List<Result> listToSort)
{
    int listSize = listToSort.Count;
    for (int i = 0; i < listSize; i++)
    {
       for (int j = 0; j < listSize; j++)
       {
           if (listToSort[i].SN[0] < listToSort[j].SN[0])
           {
               Result tempValue = listToSort[j];
               listToSort[j] = listToSort[i];
               listToSort[i] = tempValue;
            }
        }
    }

    return listToSort;
}


但这只是基于字符串的首字母进行排序。换句话说,如果我有这样的列表:


  唐纳德,艾比,戴夫,鲍勃,萨姆,皮特


它将像这样排序:


  艾比,鲍勃,唐纳德,戴夫,皮特,萨姆


人们会期望“戴夫”先于“唐纳德”。
有任何想法吗?

最佳答案

当前,您仅按首字母排序,这就是为什么看到此结果的原因。您可以使用Enumerable.OrderBy - LINQ

List<Result> sortedList = listToSort.OrderBy(r=> r.SN).ToList();


或者,对于您当前的代码,您可以将支票修改为:

if (string.Compare(listToSort[i].SN,listToSort[j].SN) < 0)

09-11 04:11