C# 如何对字符串列表进行排序,其中一个特定值应该是最后一个,而不管默认排序顺序如何?
我正在尝试对C#中的字符串列表进行排序。在列表中有一个名为“TBD”的选项。我想显示最后一个窗口中要显示的“TBD”字符串 示例列表:“橙子、苹果、TBD、芒果、西瓜、西葫芦” 预期清单:“苹果、芒果、橙子、西瓜、西葫芦、待定” 我正在使用C# 如何对字符串列表进行排序,其中一个特定值应该是最后一个,而不管默认排序顺序如何?,c#,sorting,C#,Sorting,我正在尝试对C#中的字符串列表进行排序。在列表中有一个名为“TBD”的选项。我想显示最后一个窗口中要显示的“TBD”字符串 示例列表:“橙子、苹果、TBD、芒果、西瓜、西葫芦” 预期清单:“苹果、芒果、橙子、西瓜、西葫芦、待定” 我正在使用CompareTo()方法对字符串列表进行排序 str1.ToLower().CompareTo(str2.ToLower()); 有没有其他方法可以达到同样的效果?您可以使用LINQ: list = list.OrderBy(str => str =
CompareTo()
方法对字符串列表进行排序
str1.ToLower().CompareTo(str2.ToLower());
有没有其他方法可以达到同样的效果?您可以使用LINQ:
list = list.OrderBy(str => str == "TBD").ThenBy(str => str).ToList();
它之所以有效,是因为true
(1)大于false
(0)
如果要不敏感地比较大小写:
list = list
.OrderBy(str => StringComparer.CurrentCultureIgnoreCase.Equals(str, "TBD"))
.ThenBy(str => str, StringComparer.CurrentCultureIgnoreCase)
.ToList();
您可以使用LINQ:
list = list.OrderBy(str => str == "TBD").ThenBy(str => str).ToList();
它之所以有效,是因为true
(1)大于false
(0)
如果要不敏感地比较大小写:
list = list
.OrderBy(str => StringComparer.CurrentCultureIgnoreCase.Equals(str, "TBD"))
.ThenBy(str => str, StringComparer.CurrentCultureIgnoreCase)
.ToList();
为每个项目保留一些id,并根据id进行排序。@adminSoftDK:“此方法使用当前区域性执行单词(区分大小写和区域性)比较。”不要这样想。知道。@SriramSakthivel好的,我去掉了误导性的评论:)为每个项目保留一些id,并根据id进行排序。@adminSoftDK:“此方法使用当前区域性执行单词(区分大小写和区域性)比较。”不要思考。知道。@SriramSakthivel好的,我去掉了误导性的评论:)