如何使用Dynamic Linq定义Where In查询条件?
解决Dynamic LINQ中Contains查询报错的问题
- 我之前尝试用这段代码筛选ID在指定数组中的记录:
context.Records.Where("@0.Contains(ID)", new object[]{ new string[] {"1", "2", "3"} }); - 结果直接报错:
No property or field 'ID' exists in type 'String',当时我也觉得这完全不合理啊!
后来查了Dynamic LINQ的语法规则才搞明白:在这类动态查询语句里,必须用it或者outerIt关键字来指代当前集合中的对象,不然查询引擎会错误地把ID当成字符串数组的属性解析,自然就找不到对应字段了。
只需要把代码里的ID改成outerIt.ID就能解决问题:
context.Records.Where("@0.Contains(outerIt.ID)", new object[]{ new string[] {"1", "2", "3"} });
亲测这个方法有效,终于搞定了这个莫名其妙的报错!
内容的提问来源于stack exchange,提问作者Ali Bahrami
相关产品推荐
相关产品推荐

