Как мне отсортировать мой списокпо дате? - PullRequest
1 голос
/ 06 мая 2019

Я не понимаю, как я должен сортировать этот список по дате. Я знаю, как сортировать только его формат DateTime или int.Может быть, я делаю что-то совершенно неправильно, так как я новичок.

Нужно ли мне делать второй список / массив с DateTime?Я пытался, но я не мог понять, как подключить его.И когда я попытался выполнить пузырьковую сортировку, это не сработало из-за формата списков

List<string[]> msgBoard = new List<string[]>();
string[] info = new string[3];   
Console.WriteLine("\tTitle: ");                        
string title = Console.ReadLine();                       
info[0] = title;                        
Console.WriteLine("\tMessage: ");                        
string msg = Console.ReadLine();                        
info[1] = msg;
string date = DateTime.Now.ToString("yyyy/MM/dd"); 
info[2] = date;                        
msgBoard.Add(info);

Все, что я хотел сделать, это отсортировать список по датам, которые я сохраню.

1 Ответ

2 голосов
/ 06 мая 2019

Вы действительно должны отсортировать string[] в объект. Рассмотрим этот код:

private class Entry {
 public string Message { get; set;}
 public string Title { get; set;}
 public DateTime Date { get; set;}
}

...
//your code converted to use this `Entry` object rather than a `string[]`

List<Entry> msgBoard = new List<Entry>();

Entry info = new Entry();    

Console.WriteLine("\tTitle: ");    
string title = Console.ReadLine();    
info.Title = title;    

Console.WriteLine("\tMessage: ");    
string msg = Console.ReadLine();    
info.Message = msg;    

string date = DateTime.Now;    
info.Date = date;    

loggBok.Add(logg);
loggBok.Sort(new Comparison<Entry>((Entry x, Entry y) => x.Date.CompareTo(y.Date)));

НО если вы должны отсортировать свой список, и он должен быть массивом строк , вы бы сделали это так (при условии, что элемент [2] каждой из ваших строк это дата в формате гггг / мм / дд):

loggBox.Sort(new Comparison<string[]>((string[] x, string[] y)=>
   DateTime.ParseExact(x[2], "yyyy/MM/dd").CompareTo(
   DateTime.ParseExact(y[2], "yyyy/MM/dd"))));
...