Система сортировки.Диагностика.Секундомер из текстового файла в топ-10

#c#

#c#

Вопрос:

Формат:

Прошедшее время (мин, секунды, миллисекунды) Текущая дата (день, месяц, год) Дата-время (часы, минуты, секунды)

00:00:00 23/08/2020 12:24:37
00:00:00 23/08/2020 12:25:13
00:00:00 23/08/2020 12:25:18

Я взглянул на массив.Методы сортировки, но не уверен, как это реализовать. Моя идея в том, чтобы отсортировать их по прошедшему времени, сначала проходит меньше времени, а затем отобразить, на какую дату и в какое время они были записаны. Как я могу отсортировать это в массив?

Черт возьми, вот как я записываю в текстовый файл, а также как я получаю и сортирую время.

 // Content of file
string content = timer.ts.ToString()   " "   System.DateTime.Now   "n";

// Add text to file
File.AppendAllText(path, content);
  

timer это ссылка на класс Timer, ts — секундомер.Истекло()

 ts = stopwatch.Elapsed;

string elapsedTime = String.Format("{0:00}:{1:00}.{2:00}",
    ts.Minutes, ts.Seconds, ts.Milliseconds / 10);
  

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

1. Работайте в обратном направлении. Разбивайте строки из текстового файла на первый пробел, чтобы у вас была часть TimeSpan и часть DateTime. Затем используйте TimeSpan.Parse() и DateTime. Выполните синтаксический анализ() , чтобы преобразовать эти строки в объекты. Создайте пользовательский класс для хранения обоих этих значений и поместите их в список<>. Отсортируйте свой список<> и выберите топ-10…

Ответ №1:

Примечание: Ниже приведена концепция, из которой вы можете взять ссылку. Это не работающий код

 class Program
{
    
    static void Main(string[] args)
    {
        Stopwatch st = Stopwatch.StartNew();
        LogPerformance lf = new LogPerformance { TotalTicks = st.ElapsedTicks, LoggingText = "format of your lgging string" };
    
        List<LogPerformance> performanceList = new List<LogPerformance>() {lf,.... };
        LogPerformanceComparer comparer = new LogPerformanceComparer();
        performanceList.Sort(comparer);
        performanceList.ForEach(x => logger.Log(x.LoggingText));

    }

    public class LogPerformance
    {
        public long TotalTicks { get; set; }
        public string LoggingText { get; set; }
    }

    public class LogPerformanceComparer : IComparer<LogPerformance>
    {
        public int Compare([NotNull] LogPerformance x, [NotNull] LogPerformance y)
        {
            return x.TotalTicks.CompareTo(y.TotalTicks);
        }
    }
}