Dal*_*ser 2 c# linq dynamic-linq
我有一个非常简单的查询,看起来像这样
select *
from job
where jobId like '%23%'
or title like '%23%'
Run Code Online (Sandbox Code Playgroud)
我需要能够使用动态Linq复制它
我最接近的是这个,但它不起作用
.Where("@0.Contains(jobId) or title.Contains(@0)", "23");
Run Code Online (Sandbox Code Playgroud)
有没有人有这个解决方案,理想情况下我希望它在int和字符串上做类似的
基于评论的附录
错误是:
System.Linq.Dynamic.dll中出现"System.Linq.Dynamic.ParseException"类型的异常但未在用户代码中处理附加信息:"String"类型中不存在适用的方法"Contains"
该jobId领域是一个int,而title一个是varchar.
您的查询几乎是正确的:
.Where("@0.Contains(jobId.ToString()) or title.Contains(@0)", "23")
Run Code Online (Sandbox Code Playgroud)
实体框架(我希望你正在使用它)正确地更改jobId.ToString()为CAST( [Extent1].[Id] AS nvarchar(max))...然后使用a CHARINDEX而不是a LIKE,但这不是问题.
我得到的查询,SQL Server上的Entity Framework 6.1.3是:
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%')
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2877 次 |
| 最近记录: |