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



我正在尝试编写将转换为以下查询的代码:

SELECT * FROM players WHERE Id IN (xxx)

对于MS-SQL和linq2sql,我使用了"包含"结构,效果很好。

现在(对于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.包含(pl.Id)' 无法转换为 SQL。

有什么解决方案吗?

如果不是,如何通过 ID 列表查询对象列表?

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

您也可以在 BLToolkit 中使用 Contains,检查文件。\UnitTests\Linq\Functions.cs在 BLToolkit 源代码中,用于某些单元测试,使用

包含

我认为(未经测试)您当前代码的问题在于使用 IList只需尝试使用列表即可

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

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

相关内容

  • 没有找到相关文章

最新更新