La guía paso a paso o código que verás en este artículo es la solución más fácil y efectiva que hallamos a tu duda o dilema.
Solución:
.Where(oh => oh.Hierarchy.Contains("/12/"))
También puedes usar .StartsWith()
o .EndsWith()
.
Utilizar este:
from c in dc.Organization
where SqlMethods.Like(c.Hierarchy, "%/12/%")
select *;
Supongo que está usando Linq-to-SQL * (vea la nota a continuación). Si es así, utilice string.Contiene, string.EmpiezaCon, y string.EndsWith para generar SQL que utilice el operador SQL LIKE.
from o in dc.Organization
join oh in dc.OrganizationsHierarchy on o.Id equals oh.OrganizationsId
where oh.Hierarchy.Contains(@"/12/")
select new o.Id, o.Name
o
from o in dc.Organization
where o.OrganizationsHierarchy.Hierarchy.Contains(@"/12/")
select new o.Id, o.Name
Nota: * = si está utilizando ADO.Net Entity Framework (EF/L2E) en .net 3.5, tenga en cuenta que no realizará la misma traducción que Linq-to-SQL. Aunque L2S hace una traducción adecuada, L2E v1 (3.5) se traducirá en una expresión t-sql que forzará un escaneo de tabla completo en la tabla que está consultando a menos que haya otro discriminador mejor en su cláusula where o filtros de combinación.
Actualizar: Esto se solucionó en EF/L2E v4 (.net 4.0), por lo que generará un SQL LIKE como lo hace L2S.