SQLite中的联接和匿名类型

SQLite中的联接和匿名类型,sqlite,windows-8,.net-4.5,Sqlite,Windows 8,.net 4.5,我试图在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.C

我试图在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
    };
var query=来自数据库中的客户机表()
db.Table()中的联接地址
在client.AddressID上等于address.AddressID
选择新的
{   
ClientID=client.ClientID,
AddressID=address.AddressID,
Name=地址。Name,
LastSaveDate=client.LastSaveDate
};
此操作失败,我收到的错误消息是:不支持联接

太棒了

为了解决这个问题,我将代码分为两个查询,下面是更新后的代码:

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
    }
}
var query=db.Table();
foreach(查询中的var客户端)
{
var subQuery=db.Table()中的from地址
其中address.AddressID==client.AddressID
选择新的
{
ClientID=client.ClientID,
AddressID=address.AddressID,
Name=地址。Name,
LastSaveDate=client.LastSaveDate
};
foreach(子查询中的var fullClient)
{
//在这里做点什么
}
}
在我尝试循环子查询的结果之前,这一切似乎都是有效的。 我收到以下错误:没有为此对象定义无参数构造函数

这是否意味着我不能在SQLite中使用连接和匿名类型

你知道我该怎么做吗

我正在使用SQLite、.Net 4.5并正在创建一个Windows 8应用商店应用程序。

您尝试过这个吗? 只需将
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
};
var query=来自数据库中的客户机表()
db.Table().ToList()中的联接地址
在client.AddressID上等于address.AddressID
选择新的
{   
ClientID=client.ClientID,
AddressID=address.AddressID,
Name=地址。Name,
LastSaveDate=client.LastSaveDate
};
(这可能不受支持)