我正在尝试编写一个代码,该代码将被翻译成以下查询:
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列表查询对象列表?
非常感谢,欢迎任何反馈。
答案 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转换器)问题解决后。