c# - 按搜索字符串字母顺序 LINQ 开头的名称排序

标签 c# linq sorting ienumerable

我有以下数据

jabb
Bucynski
Bartley
Abart
Benson
Brown
Beerbower
Mack
Nina
Salt
Walter

用户对这些记录执行搜索,我想对记录进行排序,以搜索字符串开头的记录应按字母顺序显示在顶部,其余记录应在这些记录之后。假设用户搜索“b”,那么搜索结果列表应该是这样的

Bartley
Beerbower
Benson
Brown
Bucynski
Abart
jabb
Mack
Nina
Salt
Walter

我们在这里看到两组,一组按字母顺序以“b”开头,其他组按字母顺序向下

注意:我试过这样

IEnumerable<Admin_Customer_List_Result> adminResult;

adminResult adminResult.OrderBy(m => m.Last_Name.StartsWith(searchString) ? 0 : 1)

最佳答案

只需在其后添加 ThenBy 即可对以 b 开头的内容和不以 b 开头的内容进行排序。此外,如果您希望小写字母“b”与以大写字母“B”开头的名称相匹配,则可能需要进行不区分大小写的比较。

adminResult.OrderBy(m => m.Last_Name.ToLower()
                          .StartsWith(searchString.ToLower()) ? 0 : 1)
           .ThenBy(m => m.Last_Name);

此外,您可以使用 OrderByDescending 而您不需要 ? 0 : 1

关于c# - 按搜索字符串字母顺序 LINQ 开头的名称排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28507615/

相关文章:

c# - LINQ Entity Framework 序列不包含任何元素

c# - LINQ Where 子句抛出从字符串到 Guid 的转换异常,即使比较仅包含 Guid

c# - DataGridTextColumn 百分比宽度

c# - MSMQ 读取错误(拒绝访问)

c# - C++和C#之间HRESULT的转换

C# 从字符串中加载一个类型并声明一个列表

c# - 是否可以克隆 IEnumerable<T> 实例,保存迭代状态的副本?

iphone - CoreData 连接实体进行排序

c++ - 如何在 C++ 中使用带有自定义排序成员函数的 sort()?

javascript - 按字母顺序排列 JavaScript 对象中的项目?