Linq-to-SQL* を使用していると仮定しています (以下の注を参照)。その場合は、string.Contains、string.StartsWith、および string.EndsWith を使用して、SQL LIKE 演算子を使用する SQL を生成します。
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 }
注: * = .net 3.5 で ADO.Net Entity Framework (EF / L2E) を使用している場合は、Linq-to-SQL と同じ変換を行わないことに注意してください。L2S は適切な変換を行いますが、L2E v1 (3.5) は t-sql 式に変換され、where 句または結合フィルターに別のより適切な識別子がない限り、クエリしているテーブルで完全なテーブル スキャンが強制されます。
更新:これは EF/L2E v4 (.net 4.0) で修正されているため、L2S と同様に SQL LIKE が生成されます。