我在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()。

其他回答

indexOf也适用于我

var result = from c in SampleList
where c.LongName.IndexOf(SearchQuery) >= 0
select c;

用这个:

from c in dc.Organization
where SqlMethods.Like(c.Hierarchy, "%/12/%")
select *;

如果你使用VB。NET,那么答案将是“*”。这是你的where从句的样子…

Where OH.Hierarchy Like '*/12/*'

备注:“*”匹配零个或多个字符。下面是关于Like操作符的msdn文章。

试试这个,我觉得挺好的

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

我总是这样做:

from h in OH
where h.Hierarchy.Contains("/12/")
select h

我知道我不使用like语句,但它在后台工作很好,这是翻译成一个查询与like语句。