在Windows 8 Metro C#中使用sqlite-net进行SQLite Join

5

我正在使用C#和SQLite作为Windows-8-Metro-App的数据库。我想使用Join命令,但不知道如何读取返回的数据。以下方法无法实现:

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

有人有如何做到这一点的想法吗?
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");

如何将表格结果作为项目提供给列表框?@podiluska - Kartiikeya

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
                    };

这个是不是首先将所有数据选择到内存中?它不会在SQL端进行联接吗? - Ivan Zivkovic
这个建议应该被删除。 - Jerry Nixon

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接