使用Contains对Int Field时动态Linq失败

时间:2012-11-30 18:36:22

标签: mysql entity-framework linq-to-entities entity-framework-4.1

我正在使用Entity Frameworks 4.1.0.0和MySQL.Data.Entity 6.5.4.0,当我尝试为一系列整数生成动态查询时,出现错误:

  

“Int32”类型中没有适用的方法“包含”

当使用类似的结构来检查字符串时,这似乎工作正常。但我想扩展它以支持我的数据中的其他数据库字段。

代码示例:

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

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

我已将Dynamic.cs添加到我的项目中,然后继续使用 http://blog.walteralmeida.com/2010/05/advanced-linq-dynamic-linq-library-add-support-for-contains-extension-.html 但是使用通过Nuget加载的Dynamic I没有区别。

提前谢谢你。

2 个答案:

答案 0 :(得分:6)

语法略有不同:

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

点击您所指的链接。

答案 1 :(得分:0)

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

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

检出this answer的扩展方法,该方法可以以相当无缝的方式对字符串,整数和布尔值列类型执行此类任务。