c# - 为多个条件实现按逻辑排序以对最终结果排序的问题
问题描述
我有一个网格,我在其中显示特定部门的代理列表。这些代理商是发布房屋租赁清单的房地产代理商。
网格显示基本信息,如,AgentName
等。NumberofActiveListings
NumberofSoldAndExpiredListings
现在要求默认情况下,网格中的列表应根据活动列表以降序(NumberofActiveListings)进行排序。NumberofSoldAndExpiredListings
如果多个代理具有相同数量的活动列表,则按降序对代理列表进行排序。如果多个代理的数量相同NumberofActiveListings
,NumberofSoldAndExpiredListings
则代理列表应按Name
升序排序。
此外,用户可以单击网格上的单个列,数据将根据该列进行排序。
下面是保存最终结果的 DTO 类:
public class AgentResultDto
{
public int AgentId { get; set; }
public string AgentName { get; set; }
public int NumberofActiveListings { get; set; }
public int NumberofSoldAndExpiredListings { get; set; }
}
public class GridviewInput
{
public string SortingColumn { get; set; } //hold the column name user will click on to sort the data
//other params
}
public virtual async Task<AgentResultDto> GetAgents(GridviewInput model)
{
List<AgentResultDto> agents = new List<AgentResultDto>();
//logic to populate agent list
agents = agents.OrderBy(model.SortingColumn).ToList();
}
但是在这里,我对如何指定条件感到困惑,如果 NumberofActiveListings 相同,则按顺序排列,NumberofSoldAndExpiredListings
如果相同,则按升序NumberofSoldAndExpiredListings
排列。AgentName
谁能指导我按逻辑顺序实现这个要求?
解决方案
至于按多列排序,请查看与初始 .OrderBy() 和 .OrderByDescending() 一起工作的 .ThenBy() 和 .ThenByDescending() 函数。
至于动态选择要排序的列,请查看Dynamic LINQ OrderBy on IEnumerable<T> / IQueryable<T>。
推荐阅读
- c# - 如何在 ASP.Net Core webapi 中从另一台机器连接 mongoDB?
- html - HTML 中的部分对齐问题
- aws-api-gateway - 具有多个 API 的 API 网关映射 - 最佳实践
- jquery - JQuery 提交在第一次提交后运行多次
- sql-server - SSRS - 聚合字段的总和
- http - 如何在 Apache Http5 Java 库中重试?
- r - 尽管有足够的内存,但 R 无法分配内存
- http - 使用 Power Automate 将用户添加到 SharePoint 组
- filter - 根据many2one字段的条件设置one2many列表显示的过滤器?(奥多 13)
- php - 如何更改 SimpleXLSXGen 中的第一个工作表名称?