5

Windows-8-Metro-AppのデータベースにC#とSQLiteを使用しています。結合コマンドを使用したいのですが、与えられたデータを読み取る方法がわかりません。これは機能しません:

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");

誰かがこれを行う方法を知っていますか?

4

2 に答える 2

7

時代遅れの場合、結合は問題ありません-新しい構文を使用する必要があります

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

問題は、返すもの(PersonデータとJobデータの両方を返す)にあるため、返すデータ構造に一致するクラスを作成する必要があります。または、個人またはジョブのみを返す必要があります。

 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");
于 2012-09-02T09:10:57.133 に答える
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
                    };
于 2013-06-27T03:24:28.500 に答える