【问题标题】:SQLite Join in Windows 8 Metro C# with sqlite-net使用 sqlite-net 在 Windows 8 Metro C# 中加入 SQLite
【发布时间】:2012-08-27 09:55:12
【问题描述】:

我将 C# 和 SQLite 用于 Windows-8-Metro-App 的数据库。我想使用 Join-Command,但不知道如何读取给定的返回数据。这不起作用:

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

有人知道怎么做吗?

【问题讨论】:

    标签: c# sql join windows-8 microsoft-metro


    【解决方案1】:

    连接很好,如果过时了 - 你应该使用更新的语法

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

    【讨论】:

    • 如何将两个表格结果作为 ITEM 提供给列表框 ..??? @podiluska
    【解决方案2】:

    我能正常使用,你可以试试。

     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 端没有加入?
    • 这个建议应该被删除
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-09-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-12
    相关资源
    最近更新 更多