Ответы, данные Джоном, Джаредом и Ишудителу, используют запрос за примером, который в основном не использует механизм запросов DB4o, и в будущем он может быть устаревшим.
Предпочтительными методами запросов к DB4O для .NET являются собственные запросы и LINQ.
// Query for all Pilots using DB4O native query:
var result = db.Query<Pilot>();
Или, альтернативно, используя Linq-to-DB4O:
// Query for all Pilots using LINQ
var result = from Pilot p in db
select p;
Обе эти работы при условии, что вы знаете тип (например, Pilot) во время компиляции. Если вы не знаете тип во время компиляции, вы можете вместо этого использовать запрос DB4O SODA:
var query = db.Query();
query.Constrain(someObj.GetType());
var results = query.Execute();
edit Зачем использовать LINQ вместо SODA, Query-by-Example (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 в лучшем случае некрасиво.