我正在尝试在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)