对于我想要以下划线“_”开头的项目的字符串列表排序的正确方法是在列表的底部,否则一切都是按字母顺序排列的。
现在我正在做这样的事情,
autoList.OrderBy(a => a.StartsWith("_") ? "ZZZZZZ"+a : a )
答案 0 :(得分:94)
如果你想要自定义排序,但又不想提供比较器,你可以拥有它--sql风格:
autoList
.OrderBy(a => a.StartsWith("_") ? 2 : 1 )
.ThenBy(a => a);
答案 1 :(得分:6)
我认为您需要使用OrderBy(Func<>, IComparer<>)
并指定自己的Comparer
来实现您的自定义逻辑。
答案 2 :(得分:2)
使用带有IComparer
的OrderBy的重载,第一个Func
参数将为比较器提供信息,然后需要比较字符串。首先处理一个或两个的情况从_
开始,然后从那里你可能需要剥离_
并使用标准string.Compare
对它们进行排序超出第一个_
{1}}