有没有办法比较C#LINQ表达式中类似于SQL LIKE运算符的字符串?
假设我有一个字符串列表.在此列表中,我想搜索一个字符串.在SQL中,我可以写:
SELECT * FROM DischargePort WHERE PortName LIKE '%BALTIMORE%'
Run Code Online (Sandbox Code Playgroud)
而不是上述,查询需要linq语法.
using System.Text.RegularExpressions;
…
var regex = new Regex(sDischargePort, RegexOptions.IgnoreCase);
var sPortCode = Database.DischargePorts
.Where(p => regex.IsMatch(p.PortName))
.Single().PortCode;
Run Code Online (Sandbox Code Playgroud)
我上面的LINQ语法不起作用.我有什么问题?
我们正在尝试在实体框架中为包含字符串字段的实体实现"LIKE"运算符,但似乎不支持它.有没有其他人试图做这样的事情?
这篇博客文章总结了我们遇到的问题.我们可以使用contains,但这只匹配LIKE的最简单的情况.组合contains,startswith,endswith和indexof将我们带到那里,但需要在标准通配符和Linq to Entities代码之间进行转换.
我想在SQL中比较两个varchars,一个是类似的Cafe,另一个Café在SQL中有一种方法可以比较两个值.例如:
SELECT *
FROM Venue
WHERE Name Like '%cafe%'
Run Code Online (Sandbox Code Playgroud)
那么,如果有一个名称的场所,Big Bobs Café Extraordinaire它将被包含在结果集中?
我想知道是否可以使用LINQ进行通配符搜索.
我看到LINQ有Contains,StartsWith,EndsWith等.
如果我需要像%Test这样的%if%work%,我该怎么办?
问候
我正在做这样的查询:
var matches = from m in db.Customers
where m.Name == key
select m;
Run Code Online (Sandbox Code Playgroud)
但我不需要m.Name完全等于钥匙.我需要m.Name像关键.
我找不到如何重新创建SQL查询:
WHERE m.Name LIKE key
Run Code Online (Sandbox Code Playgroud)
我正在使用SQL Server 2008 R2.
怎么做?
谢谢.
如何在没有完全匹配的情况下进行LINQ to SQL连接?例如,假设我有一个form包含数据的表,John Smith (2)我想将其加入Smith表中的字段name.像这样的东西
var query =
from f in db.form
join n in db.name
on f.nameField like '%' + n.firstName + '%'
Run Code Online (Sandbox Code Playgroud)
虽然like关键字似乎不适合我.
在Full .net框架中有实体框架LIKE的Q + A:
如何在Linq中使用SQL Like%?
与实体框架中的运营商一样?
例如:
from c in dc.Organization
where SqlMethods.Like(c.Boss, "%Jeremy%")
Run Code Online (Sandbox Code Playgroud)
这在EF Core中不起作用:
名称SqlMethods在当前上下文中不存在.
那么你如何使用Entity Framework CORE做一个像?
如何确定SQL Server 2005的实例是否允许区分大小写的数据库?
区分大小写,我的意思是数据库中对象的区分大小写,即以下两个语句不等效:
SELECT * FROM TABLE
SELECT * FROM table
Run Code Online (Sandbox Code Playgroud)
我查看了服务器的属性页(在Management Studio中),但我看不到它.
读完之后问题如何在Linq中做SQL Like %?当我需要在字符串中使用通配符时,我仍然有疑问,如下所示:
%cro%ft%
Run Code Online (Sandbox Code Playgroud)
并得到如下结果:
出于某种原因,简单的包含不起作用。
使用 .contains(string1) && .contains(string2),给我这个 sql 命令:
SELECT s."Nome", s."Id", s."Cpf"
FROM "Pacientes" AS s
WHERE ((STRPOS(s."Nome", 'cro') > 0) AND (STRPOS(s."Nome", 'ft') > 0))
AND (s."ClinicaId" = @__clinicId_0)
ORDER BY s."Nome"
Run Code Online (Sandbox Code Playgroud)
而不是像这样一个干净的sql:
SELECT s."Nome", s."Id", s."Cpf"
FROM "Pacientes" AS s
WHERE (s.Nome like '%cro%ft%')
AND (s."ClinicaId" = @__clinicId_0)
ORDER BY s."Nome"
Run Code Online (Sandbox Code Playgroud)
我在生产中的代码是:
result = result.Where(s => s.Nome.ToLower().Contains(name.ToLower()));
Run Code Online (Sandbox Code Playgroud) 如何使用edo实体框架在ASP.net MVC中获取通配符文本搜索(如SQL的"like"语句)?
我以为这会起作用:
var elig = (from e in _documentDataModel.Protocol_Eligibility_View
where e.criteria.Contains(query)
select e);
Run Code Online (Sandbox Code Playgroud)
但即使搜索肯定在数据库中的查询字符串,它也不会返回任何结果.我究竟做错了什么?
可能重复:
如何在Linq中使用SQL Like%?
我使用mvc 3和实体框架.我如何使用linq或lambda表达式进行搜索.请帮助