Я предполагаю, что вы используете Linq-to-SQL * (см. Примечание ниже). Если это так, используйте string.Contains, string.StartsWith и string.EndsWith для генерации SQL, в котором используется оператор 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 }
или
from o in dc.Organization
where o.OrganizationsHierarchy.Hierarchy.Contains(@"/12/")
select new { o.Id, o.Name }
Примечание: * = если вы используете ADO.Net Entity Framework (EF / L2E) в .net 3.5, учтите, что он не будет выполнять тот же перевод, что и Linq-to-SQL. Хотя L2S выполняет правильный перевод, L2E v1 (3.5) преобразуется в выражение t-sql, которое будет вызывать полное сканирование таблицы для запрашиваемой таблицы, если в предложении where или других фильтрах присоединения не найдется другой лучший дискриминатор.
Обновление: Это исправлено в EF / L2E v4 (.net 4.0), поэтому он генерирует SQL LIKE, как это делает L2S.