2012-09-02 7 views
5

Windows-8-Metro-App用のデータベースとしてC#とSQLiteを使用しています。私はJoin-Commandを使用したいが、与えられたバックデータの読み方を知らない。これは動作しません。SQLite Windows 8 Metro C#with sqlite-net

db.Query<Person>("SELECT * FROM Person, Job WHERE Person.JobID = Job.ID"); 

そして、これが実装されていません。

db.Query<Person, Job>("SELECT * FROM Person, Job WHERE Person.JobID = Job.ID"); 

誰かがこれを行う方法のアイデアを持っていますか?ザ・参加

答えて

7

は結構です、時代遅れの場合 - あなたは個人データとジョブデータの両方を戻ってきている - - あなたは、新しい構文あなたの問題は、あなたが戻ってきているものの中にある

SELECT * FROM Person INNER JOIN Job ON Person.JobID = Job.ID 

を使用する必要がありますので、作成する必要があります返すデータ構造と一致するクラス、または単に人や仕事を返すクラス。

db.Query<Person>("SELECT Person.* FROM Person INNER JOIN Job ON Person.JobID = Job.ID");   
db.Query<Job>("SELECT Job.* FROM Person INNER JOIN Job ON Person.JobID = Job.ID"); 
+0

どのようにテーブル結果をリストボックスのITEMとして提供するか? @podiluska –

0

私はそれを正しく使用できました。試してみることができます。

var db = new SQLiteAsyncConnection(_dbPath); 
var query = from person in await db.Table<Person>().ToListAsync() 
        join job in await db.Table<Job>().ToListAsync() 
        on person.JobID = job.ID 
        select new 
        { 
         Name=person.Name 
        }; 
+0

これは最初にすべてのデータをメモリに選択しませんか? SQL側での結合はしませんか? –

+0

@IvanZivkovicはい、あなたは正しいです –

+0

この提案は削除する必要があります –

関連する問題