动态Linq OR与int和字符串

时间:2015-05-21 07:57:10

标签: c# linq dynamic-linq

我有一个非常简单的查询,看起来像这样

select      *
from        job
where       jobId like '%23%'
or title    like '%23%'

我需要能够使用动态Linq

复制它

我最接近的是这个,但它不起作用

.Where("@0.Contains(jobId) or title.Contains(@0)", "23");

有没有人有这个解决方案,理想情况下我希望它在int和字符串上做类似的

基于评论的附录

错误是:

  

System.Linq.Dynamic.dll中发生了'System.Linq.Dynamic.ParseException'类型的异常但未在用户代码中处理附加信息:类型'String'中不存在适用的方法'Contains'

jobId字段为int,而titlevarchar

1 个答案:

答案 0 :(得分:6)

您的查询几乎是正确的:

jobId.ToString()

实体框架(我希望您使用它)正确地将CAST( [Extent1].[Id] AS nvarchar(max))更改为CHARINDEX ...然后使用LIKE代替SELECT [Extent1].[jobId] AS [jobId], [Extent1].[title] AS [title] FROM [dbo].[job] AS [Extent1] WHERE (( CAST(CHARINDEX( CAST( [Extent1].[jobId] AS nvarchar(max)), N'23') AS int)) > 0) OR ([Extent1].[title] LIKE N'%23%') ,但这不是&{ #39; ta问题。

我得到的查询,SQL Server上的Entity Framework 6.1.3是:

Date.today.sunday