使用LINQ在OrderBy中自定义排序逻辑

Bal*_*a R 48 .net c# linq sorting sql-order-by

将字符串列表排序的正确方法是什么,我希望以下划线'_'开头的项目位于列表的底部,否则一切都是按字母顺序排列的.

现在我正在做这样的事情,

autoList.OrderBy(a => a.StartsWith("_") ? "ZZZZZZ"+a : a )
Run Code Online (Sandbox Code Playgroud)

Amy*_*y B 97

如果你想要自定义排序,但又不想提供比较器,你可以拥有它--sql风格:

autoList
.OrderBy(a => a.StartsWith("_") ? 2 : 1 )
.ThenBy(a => a);
Run Code Online (Sandbox Code Playgroud)

  • 我更喜欢这个解决方案.我总是忘记ThenBy. (4认同)

aba*_*hev 6

我认为你需要使用OrderBy(Func<>, IComparer<>)并指定你自己的Comparer,它将实现你的自定义逻辑.