列出排序优先级特定值

时间:2014-09-26 19:29:32

标签: c# sorting

我想对这个字符串列表进行排序,优先考虑某个字符串。除此之外,普通的字符串排序也没问题。

在这个例子中,“我为什么这么愚蠢?”,这是我们可以从这个问题中得到的最明显的事情,是打算排在列表的顶部。

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;
}

在此示例中,希望位于顶部的字符串位于列表中间的某处。

2 个答案:

答案 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 )));