我正在尝试在SQLite中做一些LINQ语句,但是我遇到了一些问题。
首先,我正在尝试加入。这是我的代码:
var query = from client in db.Table<Client>()
join address in db.Table<AddressDetail>()
on client.AddressID equals address.AddressID
select new
{
ClientID = client.ClientID,
AddressID = address.AddressID,
Name = address.Name,
LastSaveDate = client.LastSaveDate
};
此操作失败,我收到的错误消息是:不支持联接。
亮!!
为了解决这个问题,我将代码拆分为2个查询,所以这里是更新的代码:
var query = db.Table<Client>();
foreach (var client in query)
{
var subQuery = from address in db.Table<AddressDetail>()
where address.AddressID == client.AddressID
select new
{
ClientID = client.ClientID,
AddressID = address.AddressID,
Name = address.Name,
LastSaveDate = client.LastSaveDate
};
foreach (var fullClient in subQuery)
{
//Do something here
}
}
这一切似乎都有效,直到我尝试循环子查询的结果。 我收到以下错误:没有为此对象定义无参数构造函数。
这是否意味着我不能在SQLite中使用连接和匿名类型?
我有什么想法可以解决这个问题。
我正在使用SQLite,.Net 4.5,我正在创建一个Windows 8商店应用程序。
提前致谢。
答案 0 :(得分:0)
你试过这个吗?
只需将ToList()
添加到您要加入的表格中即可。
var query = from client in db.Table<Client>()
join address in db.Table<AddressDetail>().ToList()
on client.AddressID equals address.AddressID
select new
{
ClientID = client.ClientID,
AddressID = address.AddressID,
Name = address.Name,
LastSaveDate = client.LastSaveDate
};