Я пытаюсь вернуть список «членов команды» из настраиваемого объекта, где их роль соответствует списку конкретных значений. Атрибут, который я пытаюсь сопоставить, - это подборщик, и мне интересно, вызывает ли это ошибку. Вот мой код:«Неожиданная ошибка произошла Платформа» - может быть, это связано с неправильным запросом списка выбора?
public static BusinessEntityCollection GetTeamMembers(string BU, string[] roles)
{
BusinessEntityCollection TeamMembers = new BusinessEntityCollection();
ColumnSet cols = new ColumnSet();
cols.Attributes = new string[] { "new_teamid", "new_id", "new_name", "ownerid", "new_rolepicklist" };
QueryExpression query = new QueryExpression();
query.ColumnSet = cols;
query.EntityName = EntityName.new_team.ToString();
List<ConditionExpression> ceList = new List<ConditionExpression>();
foreach (string role in roles)
{
//I suspect it this block is where the problem occurs as 'new_rolepicklist' is a picklist, and 'role' will be something like 'Manager' (a picklist value).
ConditionExpression ce2 = new ConditionExpression();
ce2.AttributeName = "new_rolepicklist";
ce2.Operator = ConditionOperator.Like;
ce2.Values = new string[]{role};
ceList.Add(ce2);
}
FilterExpression filter = new FilterExpression();
filter.Conditions = ceList.ToArray();
filter.FilterOperator = LogicalOperator.Or;
query.Criteria = filter;
try
{
using (crmService)
{
TeamMembers = crmService.RetrieveMultiple(query); //ERROR
}
}
catch (SoapException se)
{
throw new Exception("Error occurred retrieving Team Members for " + BU + ". " + se.Detail.InnerXml);
}
catch (Exception ex)
{
throw new Exception("Error occurred retrieving Team Members for " + BU + ". " + ex.Message);
}
return TeamMembers;
}
Во-первых, есть ли что-нибудь вопиюще очевидно, что, вероятно, будет причиной этой ошибки? Во-вторых, если это часть выбора, как мне ее исправить? Как я могу запросить атрибут, который является списком выбора со значением выбора?
UPDATE
После правильного ответа Алекса, завершение я редактировал мой метод взять ИНТ [] ролей, а также Еогеасп (интермедиат роль в ролях) и ce2.Values = новый объект [] {role} (int [] здесь не допускается).
Это, безусловно, задыхается от сравнений (вы кормите строку, значения picklist являются int) – Alex
@Alex - спасибо за предложение. Я дам ему уйти со своими эквивалентами. – sr28
@Alex - Вот и все. Блестяще, спасибо! Если вы хотите вставить это в качестве ответа, я рад отметить его как правильное. – sr28