当前位置:  开发笔记 > 编程语言 > 正文

在列表对象中排序

如何解决《在列表对象中排序》经验,为你挑选了2个好方法。

我从数据库中获取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();

现在我希望结果按Name列排序.首先是以所有值开头的searchText所有值,然后是包含的所有值searchText.

如果我写这个:

result = result.OrderBy(x => x.Name).ToList();

我得到按名称排序的结果,例如:

1. "A name"    
2. "B name"
3. "E name"
4. "F name"

所有这一切都包含eName.我想我的那种是:

1. "E name"    
2. "A name"
3. "B name"
4. "F name"

我的OrderBy表情应该改变什么?



1> Jamiec..:

OrderBy和连在一起2个订单ThenBy

.OrderBy(x => x.Name.StartsWith(searchText) ? 0 : 1)
.ThenBy(x => x.Name)



2> Patrick Hofm..:

您可以在另一个之后执行两个排序调用(第一个OrderBy,所有后续调用ThenBy):

result.OrderBy(x => !x.Name.StartsWith(searchText)).ThenBy(x => x.Name).ToList();

这将首先排序true(1),然后排序(0)false.将!x.Name使得顺序正确.然后它x.Name在两个组中进行排序.

推荐阅读
勤奋的瞌睡猪_715
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有