5

I am using C# and SQLite for a Database for a Windows-8-Metro-App. I want to use a Join-Command, but don't know how to read the given back data. This will not work:

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

And this is not implemented:

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

Someone has an idea how to do this?

4

2 回答 2

7

The join is fine, if antiquated - you should use the newer syntax

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

Your problem is in what you are returning - you are returning both Person data and Job data - so you need to create a class that matches the data structure that you are returning - or return just a person, or a 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 回答