是否有一种方法来结合(JOIN)数据从2表与SQLite在一起

本文关键字:数据 表与 在一起 SQLite JOIN 一种 是否 方法 结合 | 更新日期: 2023-09-27 18:18:28

我尝试了一些东西来组合两个表,但结果只返回第一个表的数据。

这是我的表:

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

但是它只给出了第一个表"Person"的属性。我忘了什么?

是否有一种方法来结合(JOIN)数据从2表与SQLite在一起

你忘了在did后面用现在时;)

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

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

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
    }