[英]Sort and group a list of objects by multiple properties and conditions
我有一个具有以下属性的对象列表:
日期(常规日期格式)
高优先级(布尔)
优先级(整数)
已完成(布尔值)
关闭(布尔值)
我正在尝试使用 linq 将此列表排序为以下逻辑:
如果未完成,则按高优先级排序
如果未完成则优先
那么没有优先权
如果完成则以高优先级
如果完成则优先
然后通过关闭
我还需要按日期对每个分组进行排序。
这是我当前的 linq 查询:
Tasks.GroupBy(x => x.Date)
.Select(s =>
s.OrderByDescending(a => a.HighPriority)
.ThenBy(a => a.Priority)
.ThenBy(a => a.Closed))
.SelectMany(sa => sa)
.ToList();
如何更改查询以获取遵循我的逻辑的列表?
Tasks
是 class 实例的集合。 在 class 中创建一个名为OrderPriority
的计算属性。
public byte OrderPriority
{
get
{
if (HighPriority && !Completed)
return 1;
if (Priority && !Completed)
return 2;
// and so forth
}
}
那么您的 LINQ 可能如下所示:
Tasks.OrderBy(x => x.OrderPriority).ThenBy(x => x.Date).ToList();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.