На данный момент я использую следующий код, чтобы объединить два List<string>
списка и упорядочить их по отметке времени
var list = report[0];
var list2 = report[1];
var result = list
.Union(list2)
.Select(x =>
{ return new {Log = x, Time = TimeSpan.Parse(x.Split(' ')[0])}; })
.OrderBy(x => x.Time)
.ToList();
Проблема в том, что мне приходится обрабатывать более двух списков, до n
. Я рассмотрел примеры SelectMany
, но, похоже, он не поддерживает ту же функциональность, что и Select
. Другой способ, которым я планировал сделать это, это использовать цикл foreach
, но он не кажется эффективным, особенно если список увеличивается.
Редактировать (добавлены данные выборки и ожидаемый результат):
Пример list1 может выглядеть примерно так:
11:03:01:003 INFO some event has occurred
11:03:31:004 DEBUG another event has occurred
11:04:01:015 INFO third event has occurred
Пример list2 может выглядеть примерно так:
11:03:16:003 INFO fourth event has occurred
11:03:32:025 DEBUG fifth event has occurred
11:03:54:023 INFO sixth event has occurred
И, следовательно, может быть несколько списков, как это. Ожидаемое слияние этих двух списков будет выглядеть следующим образом:
11:03:01:003 INFO some event has occurred
11:03:16:003 INFO fourth event has occurred
11:03:31:004 DEBUG another event has occurred
11:03:32:025 DEBUG fifth event has occurred
11:03:54:023 INFO sixth event has occurred
11:04:01:015 INFO third event has occurred