列表<T>.不按字母顺序排序

GPG*_*GVM 0 .net c#-4.0

我提出了这个琐事问题,并认为它相当简单.这个人让我解释为什么这个列表没有按字母顺序排序.我认为这是一个棘手的问题,直到我把它扔进一个小的存根项目,他们是对的...没有技巧它不按字母顺序排序.我用谷歌搜索,我读到的一切都说Sort()会按照我的预期工作.所以edjumakate我天才.我显然没有答案.

string str_animals = "hyena, cat, elephant, dog, iguana";
List<string> lst_animals = new List<string>(str_animals.Split(','));

lst_animals.Sort();
Run Code Online (Sandbox Code Playgroud)

排序后我的清单是:猫,狗,大象,鬣蜥,鬣狗???? 鬣狗和鬣蜥乱了?

MSDN说"这个方法使用Array.Sort,它使用QuickSort算法.这个实现执行一个不稳定的排序;也就是说,如果两个元素相等,它们的顺序可能不会被保留.相反,一个稳定的排序保留了元素的顺序这是相同的"但鬣狗和鬣蜥不相等所以我不认为那种不稳定的排序很重要.

我错过了什么?

谢谢

key*_*rdP 5

您需要拆分后修剪值,因为空白将甩开排序(使hyena来后iguana,因为hyena不以空格开头).

List<string> lst_animals = new List<string>(str_animals.Split(',').Select(x => x.Trim()));
Run Code Online (Sandbox Code Playgroud)