我想对这个字符串列表进行排序,优先考虑某个字符串。除此之外,普通的字符串排序也没问题。
在这个例子中,“我为什么这么愚蠢?”,这是我们可以从这个问题中得到的最明显的事情,是打算排在列表的顶部。
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;
}
在此示例中,希望位于顶部的字符串位于列表中间的某处。
答案 0 :(得分:1)
您的比较例程不完整。您已考虑s1 == "why am I so dumb?"
的情况,但不考虑s2 == "why am I so dumb?"
或其中两者为"why am I so dumb?"
的情况。添加这些案例应该可以解决问题(另外你可以通过案例{{1}来简化它):
return
答案 1 :(得分:1)
我不解决这个问题:-) 但是,可能是:
stringList.Sort((s,s1)=&gt; s ==“为什么我这么笨?”? - 1:s.CompareTo(s1));
或
stringList.Sort((s,s1)=&gt; s ==“为什么我这么笨?”? - 1 :( s1 ==“为什么我这么笨?”?1:s.CompareTo(s1 )));