упорядочивание списка в C#

#c# #list

#c# #Список

Вопрос:

У меня есть список объектов Employee .Класс Employee может быть таким, как показано ниже:

 Class Emplyoyee
{
    public string name;
    public string DateOFJoining; //Please note here date is in string format
}
  

Теперь я хочу отобразить список сотрудников с последним сотрудником сверху, поэтому я использую для этого приведенный ниже код :

 List<Employee> lst = GetEmployes();          
lst = lst.OrderByDescending(x => x.DateOFJoining).ToList();

//Here binding to the repeater
rptEmp.DataSource = lst.Take(2);
rptEmp.DataBind();
  

Проблема: здесь его упорядочивание, обрабатывающее дату как строку.Но я хочу упорядочить по дате.Кто-нибудь может мне помочь в этом?

Заранее спасибо.

Комментарии:

1. Не является частью какого-либо ответа, но вам следует Take(2) перед вами ToList() , чтобы избежать создания большого списка, который вы затем выбросите; Код был бы lst = lst.OrderByDescending(x => x.DateOFJoining).Take(2).ToList() .

2. спасибо, Крис, это был очень полезный совет.

Ответ №1:

Вам нужно было бы преобразовать x.DateOfJoining в DateTime в OrderByDescending выражении. Если вы уверены в качестве ваших дат, вы могли бы попробовать:

 lst = lst.OrderByDescending(x => DateTime.Parse(x.DateOfJoining)).ToList();
  

Ответ №2:

Вы можете Employee реализовать System.IComparable интерфейс. а затем просто используйте List.Sort() метод для упорядочивания сотрудников.

например:

 Class Employee : IComparable
{
    public string name;
    public string DateOFJoining; //Please note here date is in string format

    public int CompareTo(object obj) {
        if(obj is Employee) {
            Employee= (Employee) obj;

            return Convert.ToDateTime(DateOfJoining).CompareTo(Convert.ToDateTime(e.DateOfJoining));
        }

        throw new ArgumentException("object is not an Employee");    
    }
}
  

Комментарии:

1. Конечно, вам нужно убедиться, что DateOFJoining содержит правильно отформатированную дату. (в противном случае Convert выдаст исключение)