У меня есть данные в списке, поступающем от сторонней библиотеки dll. Я не могу изменить способ получения данных. Это список, как этот непрерывный и непрерывный без разделителей
List<MyType> DataList
С каждой строкой связан индексный номер. Индексные числа могут быть от 1 до 4, максимальное число 4. Таким образом, в оптимальном случае мы будем видеть группы строк, пронумерованные от 1 до 4, одну группу за другой. Но в группах может отсутствовать индекс.
Как вы можете видеть здесь, первая группа имеет 1-4, вторая группа имеет 1,2,4 (отсутствует 3), а третья группа имеет 1,2,3 (отсутствует 4), а также строки могут быть вставлены, поэтому индексы расположены не в любом порядке
Пробелы в строках, которые вы видите здесь, я вставил только для ясности
Filename Index Time
File_1 1 42038.6924500000
File_2 2 42038.6435300000
File_3 3 42038.7962800000
File_4 4 42038.9340600000
File_5 2 42938.9561300000
File_6 1 42939.0110700000
File_7 4 42939.5551700000
File_8 2 43838.9652200000
File_9 1 43839.0111500000
File_10 3 43839.0990100000
Мне нужно извлечь из этого списка 4 отдельные группы на основе номера индекса. Таким образом, каждая группа состоит из всего индекса 1 или всего индекса 2 и т. Д.
но там, где отсутствует индекс, мне нужно вставить строку заполнения пробела, чтобы указать отсутствующий индекс.
Например, вышеприведенное должно закончиться как
group on index 1
File_1 1 42038.6924500000
File_6 1 42939.0110700000
File_9 1 43839.0111500000
group 2 on index 2
File_2 2 42038.6435300000
File_5 2 42938.9561300000
File_8 2 43838.9652200000
group 3 on index 3
File_3 3 42038.7962800000
File_spacer 3 00000.0000000000
File_10 3 43839.0990100000
group 4 on index 4
File_4 4 42038.9340600000
File_7 4 42939.5551700000
File_spacer 4 00000.0000000000
Так что я мог бы сделать Linq
DataList.GroupBy(x => X.Index)).ToList()
но это не вставит нужную мне запись File_spacer Index 0000.000000000, чтобы заменить отсутствующий индекс в качестве заполнителя.
Список обычно может содержать 500 строк данных таким образом, но я не могу придумать код c # для извлечения и форматирования по мере необходимости.
Любые предложения приветствуются