我想要按照优先级对这个字符串列表进行排序。除此之外,普通的字符串排序即可。
在这个例子中,“为什么我这么笨?”是我们能从这个问题中得出的最明显的答案,应该被置于列表的顶部。
static void Main(string[] args)
{
List<string> stringList = new List<string>()
{ "foo", "bar", "why am I so dumb?", "tgif" };
stringList.Sort(StringListSorter);
stringList.ForEach(x => Console.Out.WriteLine(x));
}
static int StringListSorter(string s1, string s2)
{
int retVal = 0;
if (s1 == "why am I so dumb?")
{
retVal = -1;
}
else
{
retVal = s1.CompareTo(s2);
}
return retVal;
}
在这个例子中,希望排在列表顶部的字符串位于列表中间。
s2
是"why am I so dumb?"
字符串,会怎么样? - MAVstringList = stringList.OrderByDescending(s => s == "why am I so dumb?").ToList()
。这将保持其他字符串的顺序不变,如果您还要对其余部分进行排序,则添加ThenBy(s => s)
即可。 - Tim SchmelterOrderBy
使用稳定排序,与List.Sort
相反,这意味着如果两个元素相等,则保留原始顺序。但是,List.Sort
的主要论点是它可以更有效率,因为它不需要创建新列表,而是对原始列表进行排序。 - Tim Schmelter