ICriteria crit = session.CreateCriteria(typeof(User));
DetachedCriteria userIdsForRoles = DetachedCriteria.For(typeof(User))
.SetProjection(Projections.Distinct(Projections.Property("Id")))
.CreateCriteria("Roles")
.Add(Expression.Eq("role.Id", roleId.Value));
crit.Add(Subqueries.PropertyIn("Id", userIdsForRoles));