Я не силен в C#, поэтому решаю подобные задачи при помощи внешних файлов. Rostonix рекомендует пользоваться списками, но я по старой памяти использую прямое обращение к файлам. Возможно это нерационально, зато, в моем случае, это дает надежный результат.