Mysql 如何使用BLToolkit通过ID列表获取对象列表?

Mysql 如何使用BLToolkit通过ID列表获取对象列表?,mysql,linq-to-sql,bltoolkit,Mysql,Linq To Sql,Bltoolkit,我正在尝试编写一段代码,该代码将转换为以下查询: SELECT * FROM players WHERE Id IN (xxx) 对于MS-SQL和linq2sql,我使用了“Contains”构造,并且效果很好 现在(对于MySQl和BLToolkit),我是这样做的: public static IList<Player> GetPlayersByIds(IList<int> ids, DbManager db) { return d

我正在尝试编写一段代码,该代码将转换为以下查询:

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();
    }
公共静态IList getPlayersById(IList ID,DbManager db)
{
返回db.GetTable().Where(pl=>ids.Contains(pl.Id)).ToList();
}
但执行此代码会返回以下错误:

无法将值(vfm_elita.elita_table.player.player+c__DisplayClass13).ids.Contains(pl.Id)“”转换为SQL

有什么解决办法吗

如果否,如何通过ID列表查询对象列表


非常感谢,欢迎您提供任何反馈。

您也可以使用BLToolkit中的Contains,请查看文件..\UnitTests\Linq\Functions.cs 在BLToolkit中,一些单元测试的源代码使用contains

我认为(没有测试)当前代码的问题在于IList的使用 只要列出一个清单就可以了

public static IList<Player> GetPlayersByIds(List<int> ids, DbManager db)
{
    return db.GetTable<Player>().Where(pl => ids.Contains(pl.Id)).ToList();
}
public static IList GetPlayerById(列表ID,DbManager db)
{
返回db.GetTable().Where(pl=>ids.Contains(pl.Id)).ToList();
}

看起来我的BLToolkit的旧版本有一个bug。在获得4.1版本(已经完全重写了linq2sql转换器)后,问题得到了解决。

在真正执行时,我确实有一个列表对象类型,但感谢您的帮助。