有没有办法将两个表中的数据(JOIN)与SQLite结合起来?

时间:2015-10-20 15:03:20

标签: c# sqlite win-universal-app

我尝试了两种方法来组合2个表,但结果只返回第一个表中的数据。

这是我的表格:

 [Table("Person")]
public class Person
{
    [PrimaryKey, AutoIncrement]
    public int PersonID { get; set; }
    public string Name { get; set; }
    public int CompanyID { get; set; }
}

 [Table("Company")]
public class Company
{
    [PrimaryKey, AutoIncrement]
    public int CompanyID { get; set; }
    public string Name { get; set; }
}

这是我的疑问:

 var result = await _Connection.QueryAsync<Person>("SELECT * FROM Person JOIN Company ON Person.CompanyID = Company.CompanyID");

        return result;

但它只提供第一个表格中的属性&#34; Person&#34;。我忘记了什么?

1 个答案:

答案 0 :(得分:1)

你忘了使用现在时态;)

但实际上这个 - _Connection.QueryAsync<Person>将仅返回Person字段,因为您将具体的Person类型指定为泛型。

创建一个包含Person和Company字段或使用匿名类型的第3类,然后使用以下内容:

var query = from person in await db.Table<Person>().ToListAsync()
    join company in await db.Table<Company>().ToListAsync()
    on person.CompanyID = company.CompanyID
    select new 
    {
        Name = person.Name,
        CompanyName = company.Name
        // And so on
    }

注意:由于ToListAsync()

,这会将所有记录加载到内存中

<强>更新 您可以将select更改为此

,而不是非同义类型
PersonCompany personCompany = from person in .....
//---cut
on person.CompanyID = company.CompanyID
        select new PersonCompany
        {
            Name = person.Name,
            CompanyName = company.Name
            // And so on
    }