【发布时间】:2015-05-21 07:57:10
【问题描述】:
我有一个非常简单的查询,看起来像这样
select *
from job
where jobId like '%23%'
or title like '%23%'
我需要能够使用动态 Linq 复制它
我最接近的是这个,但它不起作用
.Where("@0.Contains(jobId) or title.Contains(@0)", "23");
有没有人解决这个问题,理想情况下我希望它在 int 和字符串上都做类似
基于 cmets 的附录
错误是:
System.Linq.Dynamic.dll 中出现“System.Linq.Dynamic.ParseException”类型的异常,但未在用户代码中处理附加信息:“String”类型中不存在适用的方法“Contains”
jobId 字段是 int,而 title 是 varchar。
【问题讨论】:
-
你为什么使用
@0.Contains(jobId)?在这种情况下,@0放置了“23”,所以它看起来像"23".Contains(jobld) -
你试过
.Where(x=>x.jobId.ToString().Contains("23") || title.Contains("23");吗? -
@Hintham 使用动态 linq,所以传递字符串而不是表达式
-
@Grundy 你是对的,忽略了 OP 对使用动态 Linq 的要求
标签: c# linq dynamic-linq