Мне нужно обработать большие файлы CSV (до десятков ГБ), которые выглядят так:
Key,CompletedA,CompletedB
1,true,NULL
2,true,NULL
3,false,NULL
1,NULL,true
2,NULL,true
У меня есть парсер, который выдает проанализированные строки как IEnumerable<Record>
, так что я только для чтенияпо одной строке за раз в памяти.
Теперь мне нужно сгруппировать записи по ключу и проверить, имеют ли столбцы CompletedA и CompletedB значение в группе.На выходе мне нужны записи, в которых нет ни CompletedA, ни CompletedB внутри группы.
В этом случае это запись с ключом 3.
Однако, происходит много подобных обработокодин и тот же набор данных, и я не хочу повторять его несколько раз.
Я думаю, что могу преобразовать IEnumerable в IObservable и использовать Reactive Extentions для поиска записей.
Можно ли это сделатьэто эффективный для памяти способ с простым выражением Linq над коллекцией IObservable?