按名称顺序分组
group by name order
有两种类型 "files" 和 "folders" 我想按文件和文件夹分组,但文件夹必须在最上面。我如何在 LINQ 中执行此操作?
public class DocumentItem
{
public string Type { get; set; }
public string Name { get; set; }
}
List<DocumentItem> result = SPHelper.GetList().OrderBy(x => x.Type).ToList();
您可以使用 OrderByDescending
方法按 Type
:
进行反向排序
var result = SPHelper.GetList().OrderByDescending(x => x.Type).ToList();
不能说你为什么需要在你的例子中按类型分组。
向 DocumentItem 添加一个 属性 以表示更高的优先级,或者将它们视为单独的组,最后按顺序将两者添加到最终集合中。
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 排序,从而对您的实体进行分组。
有两种类型 "files" 和 "folders" 我想按文件和文件夹分组,但文件夹必须在最上面。我如何在 LINQ 中执行此操作?
public class DocumentItem
{
public string Type { get; set; }
public string Name { get; set; }
}
List<DocumentItem> result = SPHelper.GetList().OrderBy(x => x.Type).ToList();
您可以使用 OrderByDescending
方法按 Type
:
var result = SPHelper.GetList().OrderByDescending(x => x.Type).ToList();
不能说你为什么需要在你的例子中按类型分组。
向 DocumentItem 添加一个 属性 以表示更高的优先级,或者将它们视为单独的组,最后按顺序将两者添加到最终集合中。
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 排序,从而对您的实体进行分组。