我正在使用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没有区别。
提前谢谢你。
答案 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的扩展方法,该方法可以以相当无缝的方式对字符串,整数和布尔值列类型执行此类任务。