有两种类型"文件"和"文件夹"我想按文件和文件夹分组,但文件夹必须在顶部。我怎么能在LINQ中做到这一点?
public class DocumentItem
{
public string Type { get; set; }
public string Name { get; set; }
}
List<DocumentItem> result = SPHelper.GetList().OrderBy(x => x.Type).ToList();
答案 0 :(得分:2)
您可以使用OrderByDescending
方法按Type
进行反向排序:
var result = SPHelper.GetList().OrderByDescending(x => x.Type).ToList();
不能说你为什么需要在你的例子中按类型分组。
答案 1 :(得分:0)
向DocumentItem添加一个属性以表示更高的优先级,或者将它们视为单独的组,最后按顺序将它们添加到最终集合中。
答案 2 :(得分:0)
OrderByDescending 将在此特定情况下执行此操作,如下所示:
List<DocumentItem> result = SPHelper.GetList().OrderByDescending(x => x.Type).ToList();
如果您还需要在每个组中进行排序(按字母顺序排序),则可以使用 ThenBy 附加此查询:
List<DocumentItem> result = SPHelper.GetList().OrderByDescending(x => x.Type)
.ThenBy(x => x.Name).ToList();
最后一个选项可以按布尔条件排序,如下所示:
List<DocumentItem> result = SPHelper.GetList()
.OrderByDescending(x => x.Type == "Folder").ToList();
此处, OrderByDescending 从True到False排序,从而对您的实体进行分组。