.NET EF 按多列排序

问题描述 投票:0回答:1

我目前正在开发一个使用实体框架的 .NET 项目。我需要帮助按日期对用户进行排序。具体来说,我需要根据多个日期列对用户进行排序。在用户实体中,同时存在 createDate 和 updateDate 字段。此外,每个用户都包含一个项目列表,每个项目还拥有 createDate 和 updateDate 属性。

我的目标是按以下日期中的最新日期对用户进行排序:user.createDate、user.updateDate、item.createDate 和 item.updateDate。

public class User
{
    public Guid Id { get; set; }
    public string FirstName { get; set; };
        public string LastName { get; set; };
    public string Email { get; set; };
    public virtual ICollection<Item> Items { get; set; };
    public Datetime CreatedDate { get; set; }
    public Datetime? UpdatedDate { get; set; }
}
public class Item
{
    public Guid Id { get; set; }
    public string Name { get; set; };
    public Datetime CreatedDate { get; set; }
    public Datetime? UpdatedDate { get; set; }
}

您能否建议我如何仅使用 IQueryable 来实现这种排序?这可行吗?

c# .net entity-framework
1个回答
0
投票

您只需在正确的位置使用

OrderBy
ThenBy
即可完成订单。所以你需要这样的东西:

var users = context.Users
    .Include(x => x.Items.OrderByDescending(x => x.CreatedDate).ThenByDescending(x => x.UpdatedDate))
    .OrderByDescending(x => x.CreatedDate)
    .ThenByDescending(x => x.UpdatedDate)
    .ToList();
© www.soinside.com 2019 - 2024. All rights reserved.