Формат protobuf - это линейная последовательность элементов; Любая индексация и т. д., которую вы можете применять, может применяться только отдельно. Тем не менее, IEnumerable<T>
доступно; Вы можете найти это:
var item = Serializer.DeserializeItems<YourType>(source)
.First(item => item.Id == id);
делает работу хорошо; это:
- лениво наматывается; каждый предмет выдается индивидуально, поэтому вам не нужно излишков памяти
- короткозамкнут; если предмет найден в начале, он быстро выйдет из строя
Или для нескольких предметов:
var list = Serializer.DeserializeItems<YourType>(source)
.Where(item => item.Foo == foo);
(добавить ToList в конец вышеупомянутого, если вы хотите буферизовать соответствующие элементы в памяти, или использовать без ToList, если вы просто хотите разобрать его один раз только для пересылки)