2011-02-23 7 views
0

db4o:SODAクエリのLINQに相当しますか? db4oの、私は次のようSODAを生成LINQコードを見つけようとしているために

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んが、エンドノードへのツリーのドロップダウンです。たとえば、「2010-10-18」の日付に「APPLE」を選択する場合は、「木曜日にApple」を返します。

データ構造:

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はオブジェクトデータベースであり、RDBMSのように各オブジェクトの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 
          }; 

答えて

1

実際に直接query.Descend("Symbol");で「シンボル」に降りたいですか?私はあなたがタイプ 'シンボル'のために拘束したいと思う。確か

var query = db4o.db.Query(); 
query.Constrain(typeof(Symbol));   
query.Descend("_symbolGlobal").Constrain("APPLE"); 
query.Descend("_date"); // Add a date constraint here. 
IObjectSet result = query.Execute(); 

ない100%が、このようなものでなければなりません:私はちょうどあなたがこれを意味していることを前提とあなたが下降しようとしている場合、私は、しかし、正しいとこの答えをマークした

// I assume here that the field _symbolGlobal is accessable with the property SymbolGlobal 
// and the field _date is accessable with the property Date 
var result = from Symbol s in db4o.db 
      where s.SymbolGlobal == "APPLE" 
      select s.Date; 
+0

IListでインスタンス化されたもののようなオブジェクトの集合に変換すると、それは機能しません(コレクションはSODAには見えません)。 – Contango

+0

ええと、私はコレクションの操作がLINQでも使えるはずだと思います。 s.SymbolGlobal.Contains( "Apple")と同様です。 – Gamlor

関連する問題