Для db4o я пытаюсь найти код LINQ, который генерирует следующую SODA:
var query = db4o.db.Query();
query.Descend("Symbol");
query.Descend("_symbolGlobal").Constrain("APPLE");
query.Descend("_date"); // Add a date constraint here.
IObjectSet result = query.Execute();
Все, что делает SODA - это опускает дерево до конечного узла. Например, если вы хотите выбрать «APPLE» для даты «2010-10-18», будет возвращено «Яблоки в четверг».
Структура данных:
Root ----Symbol (APPLE)
| |------Day 1: Date: 2010-10-18, string "Apples on Thursday"
| |------Day 2: Date: 2010-10-19, string "Apples on Friday"
|
|
|-----Symbol (PEAR)
|------Day 1: Date: 2010-10-18, string "Pears on Thursday"
|------Day 2: Date: 2010-10-19, string "Pears on Friday"
Вот моя первая попытка, которая не работает как получение перекрестного продукта (то есть, он рассматривает каждую возможную комбинацию). Я не могу использовать соединение, так как db4o - это объектная база данных, и у вас нет доступа к ID для каждого объекта, как в СУБД.
var stringForDayAndSymbol = from s in db4o.db.Query<Symbol>(a => a.SymbolGlobal == "APPLE")
from t in db4o.db.Query<Date>(b => b.Date == new DateTime(2010, 10, 20))
select new
{
s.SymbolGlobal,
t.Date,
t.Meta
};