c# - 使用 linq 基于多个条件对数据库条目进行排序

标签 c# database linq group-by sql-order-by

我需要根据各种条件对数据库中的条目进行排序。根据其某些属性,每个条目可以具有三种状态之一。

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)

我想避免遍历一个列表,将其分成三个列表,然后再追加它们。有没有办法使用 Linq 来实现这一点?我可以按这些条件对条目进行分组,然后对这些组进行排序吗?如果是这样,我该怎么做?

最佳答案

可以使用扩展方法

OrderBy(x => x.IsLocked).ThenBy(...)
                        .ThenBy(...)

关于c# - 使用 linq 基于多个条件对数据库条目进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17407761/

相关文章:

c# - Windows 桌面 (5) 在 .net 5 上下文中是什么意思?

c# - 我们是否需要处理资源以及为什么我们需要在 WCF 中

c# - Unity 2D 碰撞检测

mysql - 大规模 Wordpress 数据库迁移

c# - .Net 的 Linq/IEnumerable 中 CAR 和 CDR 的扩展方法等价物

c# - 在文本文件中加载和访问模板变量

database - 用于读取/保存数据到数据库的 .NET 单元测试

java - 如果找不到记录,则 SQL 查询调用失败

c# - 基于其他列合并 C# 列表中一列的多行

c# - 为 SingleOrDefault Linq 方法定义默认值