我从数据库Sytem.Collections.generic.IList获取并通过searchText进行过滤:
String searchText="E"; var query = something().List(); query = query.Where(x => !string.IsNullOrEmpty(x.Name) && x.Name.ContainsInsensitive(searchText)).ToList(); result = query.Select().ToList();
现在我希望结果按名称列排序.首先,所有的值都以searchText开始,然后是包含searchText的所有值.
如果我写这个:
result = result.OrderBy(x => x.Name).ToList();
我得到结果按Name排序,例如:
1. "A name" 2. "B name" 3. "E name" 4. "F name"
所有这些都包含e名称.我想我的类型是:
1. "E name" 2. "A name" 3. "B name" 4. "F name"
我的OrderBy表达式应该改变什么?
解决方法
用OrderBy和ThenBy链接在一起2个订单
.OrderBy(x => x.Name.StartsWith(searchText) ? 0 : 1) .ThenBy(x => x.Name)