我有以下数据
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/