如何按导航属性(集合)排序

时间:2020-07-26 21:29:46

标签: c# performance entity-framework asp.net-core entity-framework-6

如果导航属性是集合,如何按导航属性字段(实体框架)排序 我想按日期和导航属性(集合)中的日期对员工列表进行排序 )

2 个答案:

答案 0 :(得分:0)

如果Trans表示诸如NameValue对之类的集合,其中一个类似于EmployeeStartDate:

employees.OrderBy(x => x.Trans.Single(t => t.Name == "EmployeeStartDate").Date));

这只是一个示例,并假设Trans集合始终包含必需的匹配条目。

如果Trans只是日期的集合,那么您需要确定要使用哪个日期。例如最小或最大日期。例如,要最早订购:

employees.OrderBy(x => x.Trans.Min(t => t.Date));

答案 1 :(得分:0)

除了@Steve Py给出的答案外,您还可以先选择结果,然后对所需字段进行排序

以下是演示:

        employees = (employees.Select(d => new Employee 
                      {
                        Name= d.Name,
                        Trans= d.Trans.OrderBy(e=>e.Date).ToList()
                      })).ToList();

型号:

public class Employee
{
    [Key]
    public string Name { get; set; }
    public ICollection<Trans> Trans{ get; set; }
}

public class Trans
{
    public int ID { get; set; }
    public DateTime Date { get; set; }
}
相关问题