Оптимальным способом сделать это, вероятно, будет предварительная сортировка файла на сервере и использование файлов с отображенной памятью для выполнения двоичного поиска файла. При этом .NET CF 2.0 не будет поддерживать файлы, отображаемые в память.
Возможно, вам лучше всего предварительно отсортировать файл и использовать потоковый доступ для выполнения двоичного поиска по файлу. Это не очень хорошо, потому что у вас нет последовательных чтений, но, учитывая, что вы находитесь на CF, есть большая вероятность, что ваше хранилище данных на устройстве основано на флэш-памяти, поэтому произвольный доступ для двоичного поиска, вероятно, не будет слишком плохо ...