У меня есть строка CSV:
string data = "G9999999990001800002777107050,G9999999990002777107HMNLAQKPRLLHRAQRWJ010,1,3,29,P,6.74,11.23,07,P,5.25,14.29,08,P,6.89,16.92,2,5,052,U,4.78,31.04,095,O,9.59,27.63,076,P,3.85,16.50,094,P,4.84,18.30,093,O,8.28,26.90,062,P,4.64,16.00,061,P,2.84,12.87,090,O,7.90,20.83,050,P,3.36,16.59,057,B,12.05,34.46,1,1,111,P,7.26,13.79";
Первые 2 элемента являются идентификаторами.
Вторые 2 указывают строку и столбец, например, 1 строка 3 столбца. Каждый блок данных содержит 4 элемента, поэтому мне нужно отфильтровать 12 элементов: 29,P,6.74,11.23,07,P,5.25,14.29,08,P,6.89,16.92
После этого следующие элементы - 2 и 5, например, 2 строки 5 столбцов. Опять же, каждый кусок данных имеет 4 элемента, поэтому мне нужно 40 элементов, и это приведет к 052,U,4.78,31.04,095,O,9.59,27.63,076,P,3.85,16.50,094,P,4.84,18.30,093,O,8.28,26.90,062,P,4.64,16.00,061,P,2.84,12.87,090,O,7.90,20.83,050,P,3.36,16.59,057,B,12.05,34.46
Следующие элементы - 1,1, например, 1 строка 1 столбец, поэтому возьмите 4 элемента, т.е. 111,P,7.26,13.79
Показатели (например, 1,3, 2,5 и 1,1) могут быть разными, и поэтому очевидно, что длина CSV будет другой. В этом примере также может быть множество наборов этих индикаторов, а не только 3.
Я уже начал использовать метод Aggregate((x, y) => x * y)
, чтобы вычислить, сколько нам нужно, но мой код недостаточно динамичен, чтобы учитывать более 3 наборов индикаторов
Есть ли способ найти эти индикаторы и затем вернуть правильное количество элементов из правильной позиции в строке CSV?
ОБРАТИТЕ ВНИМАНИЕ: Я не ограничиваю себя только решением LINQ. Я просто подумал, что, может быть, есть встроенные методы для этого.