如何通过BLToolkit的id列表获取对象列表?

时间:2012-04-11 03:26:38

标签: mysql linq-to-sql bltoolkit

我正在尝试编写一个代码,该代码将被翻译成以下查询:

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 +&lt;&gt; c__DisplayClass13).ids.Contains(pl.Id)'无法转换为SQL。

有没有解决方案?

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

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

2 个答案:

答案 0 :(得分:0)

你也可以在BLToolkit中使用Contains,检查文件.. \ UnitTests \ Linq \ Functions.cs 在BLToolkit源代码中使用contains

进行一些单元测试

我认为(没有测试)你当前代码的问题是使用IList 只需使用List

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

答案 1 :(得分:0)

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