Как сортировать по полю свойства навигации (структура сущности), если свойство навигации - коллекция Я хочу отсортировать список сотрудников по дате и дате в свойстве навигации (коллекции) )

-1
Moneim 27 Июл 2020 в 00:29

2 ответа

Лучший ответ

Если 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));
0
Steve Py 26 Июл 2020 в 23:03

В дополнение к ответу @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; }
}
0
Yongqing Yu 28 Июл 2020 в 09:32