0

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 ストア アプリを作成しています。

4

1 に答える 1

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
};
于 2013-05-30T09:01:26.770 に答える