如何对字符串列表进行排序,其中一个特定值应该是最后的,尽管默认排序顺序?

und*_*ted 0 c# sorting

我试图在C#中排序字符串列表.在列表中有一个名为"TBD"的选项.我想显示最后显示的'TBD'字符串.

示例列表:"Orange,Apple,TBD,Mango,WaterMelon,Zucchini"

预计清单:"Apple,Mango,Orange,WaterMelon,Zucchini,TBD"

我正在使用该CompareTo()方法对字符串列表进行排序.

str1.ToLower().CompareTo(str2.ToLower());
Run Code Online (Sandbox Code Playgroud)

有没有其他方法可以实现相同的目标?

Tim*_*ter 6

您可以使用LINQ:

list = list.OrderBy(str => str == "TBD").ThenBy(str => str).ToList();
Run Code Online (Sandbox Code Playgroud)

它起作用,因为true(1)大于 false(0).

如果你想比较不区分大小写:

list = list
    .OrderBy(str => StringComparer.CurrentCultureIgnoreCase.Equals(str, "TBD"))
    .ThenBy(str => str, StringComparer.CurrentCultureIgnoreCase)
    .ToList();
Run Code Online (Sandbox Code Playgroud)