我在SQL中有一个过程,我试图转化为Linq:

SELECT O.Id, O.Name as Organization
FROM Organizations O
JOIN OrganizationsHierarchy OH ON O.Id=OH.OrganizationsId
where OH.Hierarchy like '%/12/%'

我最关心的一行是:

where OH.Hierarchy like '%/12/%'

我有一个存储层次结构的列,例如/1/3/12/,所以我只使用%/12/%来搜索它。

我的问题是,Linq或。net中使用百分号的等价是什么?


当前回答

.Where(oh => oh.Hierarchy.Contains("/12/"))

你也可以使用. startswith()或. endswith()。

其他回答

.NET核心现在有EF.Functions.Like

  var isMatch = EF.Functions.Like(stringThatMightMatch, pattern);

用这个:

from c in dc.Organization
where SqlMethods.Like(c.Hierarchy, "%/12/%")
select *;
System.Data.Linq.SqlClient.SqlMethods.Like("mystring", "%string")

试试这个,我觉得挺好的

from record in context.Organization where record.Hierarchy.Contains(12) select record;

如果你不匹配数字字符串,最好使用通用大小写:

.Where(oh => oh.Hierarchy.ToUpper().Contains(mySearchString.ToUpper()))