[英]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.