Mysql 对Int字段使用Contains时动态Linq失败

Mysql 对Int字段使用Contains时动态Linq失败,mysql,entity-framework,linq-to-entities,entity-framework-4.1,Mysql,Entity Framework,Linq To Entities,Entity Framework 4.1,我正在使用实体框架4.1.0.0和MySQL.Data.Entity 6.5.4.0,当我尝试为一系列整数生成动态查询时,我得到一个错误: “Int32”类型中不存在适用的方法“Contains” 当使用类似的结构来检查字符串时,这似乎很好。但是我想扩展它以支持数据中的其他db字段 代码示例: int[] ids = new int[] { 1, 3, 4 }; IQueryable<entityname> list = db.tablename.W

我正在使用实体框架4.1.0.0和MySQL.Data.Entity 6.5.4.0,当我尝试为一系列整数生成动态查询时,我得到一个错误:

“Int32”类型中不存在适用的方法“Contains”

当使用类似的结构来检查字符串时,这似乎很好。但是我想扩展它以支持数据中的其他db字段

代码示例:

        int[] ids = new int[] { 1, 3, 4 };

        IQueryable<entityname> list = db.tablename.Where("Id.Contains(@0)", ids);
int[]ids=newint[]{1,3,4};
IQueryable list=db.tablename.Where(“Id.Contains(@0)”,Id);
我已将Dynamic.cs添加到我的项目中,并遵循 但是使用我通过Nuget加载的动态代码并没有什么不同


先谢谢你

语法略有不同:

IQueryable<entityname> list = db.tablename.Where("@0.Contains(outerIt.Id)", ids);
IQueryable list=db.tablename.Where(“@0.Contains(outerIt.Id)”,Id);

遵循您所参考的链接。

如果需要检查给定(变量)int值是否包含在实体列中,可以使用动态Linq执行以下操作:

return query.Where(String.Format("{0}.ToString().Contains(@0)", field), value);

请查看一个扩展方法,它可以以非常无缝的方式使用字符串、整数和布尔列类型执行此类任务。

您的意思是
@0.Contains(Id)
?通常情况下是这样的,但我只是编写一些测试代码并手动指定列来生成/测试错误。它是@0.Contains(outerIt.Id)。我在那个博客上实现了同样的功能。唯一的问题是,虽然nuget将得到更新,但您必须从git下载源代码,并在每次更新时重新应用更改