Раствор 1
Выполните левое внешнее соединение между таблицей Task и POA, получая только столбец acitivityId и столбец Principaltypecode:
var query = new QueryExpression("task");
var principalObjectAccess = query.AddLink("principalobjectaccess", "activityid", "objectid", JoinOperator.LeftOuter);
principalObjectAccess.Columns.AddColumns("principaltypecode");
var entityCollection = _service.RetrieveMultiple(query);
Затем выполните фильтрацию в оперативной памяти, чтобы удалить все записи в коллекции, где принципал основного типа равен команде. Помните, что если вы найдете Id, который удовлетворяет этому условию, вы должны удалить все записи с этим Id, важно удалить задачи, которые являются общими как для пользователя, так и для команды.
Решение 2
Этот запрос даст вам все задачи, которые передаются команде:
var teamPrincipalTypeCode = 9;
var query = new QueryExpression("task");
var principalObjectAccess = query.AddLink("principalobjectaccess", "activityid", "objectid");
principalObjectAccess.LinkCriteria.AddCondition("principaltypecode", ConditionOperator.Equal, teamPrincipalTypeCode);
var entityCollection = _service.RetrieveMultiple(query);
После его запуска вам просто нужно запросить все руководства по задачам и вычесть те, которые были возвращены в результате запроса выше. Вы можете легко сделать это, используя метод Except из пространства имен System.Linq.