使用CompareTo对包含两个参数的列表进行排序

JF *_*ieu 2 c# sorting list compareto

我目前正在使用列表中包含的对象类型中的'CompareTo'方法对C#列表进行排序.我想通过他们的WBS(工作分解结构)按升序排序所有项目,我可以使用以下代码很好地管理这个:

        public int CompareTo(DisplayItemsEntity other)
        {
            string[] instanceWbsArray = this.WBS.Split('.');
            string[] otherWbsArray = other.WBS.Split('.');

            int result = 0;

            for (int i = 0; i < maxLenght; i++)
            {
                if (instanceWbsArray[i].Equals(otherWbsArray[i]))
                {
                    continue;
                }
                else
                {    
                    result = Int32.Parse(instanceWbsArray[i]).CompareTo(Int32.Parse(otherWbsArray[i]));
                    break;
                }
            }
            return result;
        }
Run Code Online (Sandbox Code Playgroud)

现在,在考虑第二个WBS之前,我希望能够按字母顺序排序考虑多个参数,如项目名称.我怎样才能做到这一点?

Mir*_*Mir 9

我不知道你的类的细节,所以我将提供一个使用字符串列表和LINQ的示例.OrderBy将按字母顺序排序字符串,ThenBy然后按照它们的长度排序.您可以轻松地根据需要调整此样本.

var list = new List<string>
{
    "Foo",
    "Bar",
    "Foobar"
};
var sortedList = list.OrderBy(i => i).
    ThenBy(i => i.Length).
    ToList();
Run Code Online (Sandbox Code Playgroud)