ответы, предоставленные Джоном, Джаредом, и yshuditelu используют запрос по примеру, который в значительной степени неиспользуемый механизм запросов DB4o, и потенциально может быть устаревшим в будущем.
Предпочтительные методы запроса на DB4O для .NET - это родные запросы и LINQ.
// Query for all Pilots using DB4O native query:
var result = db.Query<Pilot>();
Или же с помощью Linq-на-db4o:
// Query for all Pilots using LINQ
var result = from Pilot p in db
select p;
Обе эти работы при условии, вы знаете тип (например, пилот) во время компиляции. Если вы не знаете тип во время компиляции, вместо этого можно использовать запрос db4o SODA:
var query = db.Query();
query.Constrain(someObj.GetType());
var results = query.Execute();
редактировать Почему использовать LINQ вместо содовой, запроса по образцу (QBE) или Native Query (NQ)? Поскольку LINQ делает очень естественным выполнение выражений запросов. Например, вот как вы бы запросить пилотов имени Майкл:
var michaelPilots = from Pilot p in db
where p.Name == "Michael"
select p;
И LINQ это компонуемы означает, что вы можете сделать что-то вроде этого:
var first20MichaelPilots = michaelPilots.Take(20);
И вы все равно получите эффективный запрос выполненный в DB4O, когда вы перебираете результаты. Выполнение этого же в SODA или QBE или NQ в лучшем случае уродливое.
Ударьте меня к дженерикам. Что дает бонус reusablility для ЛЮБОГО типа, хранящегося в db –