我尝试了两种方法来组合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;。我忘记了什么?
答案 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
}