QueryExpression без учета регистра
Можно ли построить запрос с условным выражением, которое не чувствительно к регистру?
ConditionExpression condition = new ConditionExpression()
{
AttributeName = "lastname",
Operator = ConditionOperator.BeginsWith,
Values = new ObservableCollection<object>() { searchName }
};
В этом примере я хотел бы, чтобы поиск с searchName был без учета регистра.
2 ответа
Решение
Я считаю, что это фактор сортировки базы данных, который был выбран при установке CRM, а не функция QueryExpression.
По умолчанию во время чистой установки Latin1_General_CI_AS
, Вы можете проверить свои, выполнив следующую инструкцию sql:
SELECT DATABASEPROPERTYEX('OrganisationName_MSCRM', 'Collation')
Правильный ответ вы можете найти на http://crmonaroll.blogspot.in/2013/06/case-in-sensitive-search-in-mscrm-2011.html
Чтобы выполнить поиск без учета регистра в MSCRM 2011, нам нужно немного настроить запрос, например,
if (!String.IsNullOrEmpty(fieldname))
query.Criteria.AddCondition("fieldname".ToLower(), ConditionOperator.Equal, fieldname.ToLower());
EntityCollection col = service.RetrieveMultiple(query);
Здесь я устанавливаю имя схемы в ToLower()
который на самом деле делает свое дело, надеюсь, это поможет. Оставьте свои комментарии.