さまざまな条件に基づいてデータベース内のエントリを並べ替える必要があります。各エントリは、その属性のいくつかに応じて、3 つのステータスのいずれかを持つことができます。
グループ A (ステータス「ロック」):
IsLocked == true;
グループ B (ステータス「非アクティブ」):
IsLocked == false &&
(IsApproved == false ||
Supplier.IsActive == false ||
Supplier.IsDeleted == true ||
ProductGroup.IsActive == false ||
ProductGroup.IsDeleted == true ||
Products.All(x => x.BestBeforeDate < DateTime.Now) == true)
グループ C (ステータス「アクティブ」):
IsLocked == false &&
IsApproved == true &&
Supplier.IsActive == true &&
Supplier.IsDeleted == false &&
ProductGroup.IsActive == true &&
ProductGroup.IsDeleted == false &&
Products.Any(x => x.BestBeforeDate > DateTime.Now) == true)
リストを 3 つに分割し、後で再度追加することは避けたいと思います。Linq を使用してこれを達成する方法はありますか? これらの条件でエントリをグループ化し、グループを並べ替えることはできますか? もしそうなら、どうすればいいですか?