1

次のクエリに変換されるコードを書き込もうとしています。

SELECT * FROM players WHERE Id IN (xxx)

MS-SQLとlinq2sqlでは、「Contains」構造を使用しましたが、これはうまく機能しました。

今(MySQlとBLToolkitの場合)私はそれを次のように行いました:

    public static IList<Player> GetPlayersByIds(IList<int> ids, DbManager db)
    {
        return db.GetTable<Player>().Where(pl => ids.Contains(pl.Id)).ToList();
    }

ただし、このコードを実行すると、次のエラーが返されます。

value(vfm_elita.elita_table.player.Player + <> c__DisplayClass13).ids.Contains(pl.Id)'はSQLに変換できません。

これに対する解決策はありますか?

いいえの場合、IDのリストでオブジェクトのリストをクエリするにはどうすればよいですか?

どうもありがとうございました、どんなフィードバックでも大歓迎です。

4

2 に答える 2

0

BLToolkitでContainsを使用することもできます。containsを使用したいくつかの単体テストについては、BLToolkitソースのファイル.. \ UnitTests \ Linq\Functions.csを確認してください。

私は(テストなしで)あなたの現在のコードの問題はIListの使用であると思いますただリストでそれを試してみてください

public static IList<Player> GetPlayersByIds(List<int> ids, DbManager db)
{
    return db.GetTable<Player>().Where(pl => ids.Contains(pl.Id)).ToList();
}
于 2012-04-11T14:51:11.037 に答える
0

バグのある古いバージョンのBLToolkitを使用していたようです。4.1(linq2sqlコンバーターを完全に書き換えたもの)を入手した後、問題は解決されました。

于 2012-04-12T03:52:38.637 に答える