Я просто пытаюсь упорядочить их языком набор KnowledgeArticle. Моя первая догадка была:
var SPRSet = _XrmServiceContext.KnowledgeArticleSet
.Where(c => c.IsInternal == false)
.Where(c => c.StateCode == Xrm.KnowledgeArticleState.Published)
.OrderBy(s => s.LanguageLocaleId.Name)
Это дает мне следующую ошибку:
System.NotSupportedException : «Вызов orderBy должен указывать имена свойств».
Затем я попытался загрузить объект LanguageLocale, выполнив следующие действия:
SPRSet.OrderBy(s => _XrmOrganizationService.Retrieve(s.LanguageLocaleId.LogicalName, s.LanguageLocaleId.Id, new ColumnSet("name")).ToEntity<Xrm.LanguageLocale>().Name);
или похожие:
SPRSet.OrderBy(s => _XrmOrganizationService.Retrieve(s.LanguageLocaleId.LogicalName, s.LanguageLocaleId.Id, new ColumnSet("name")).GetAttributeValue<string>("name"));
Оба дают мне следующую ошибку:
System.ServiceModel.FaultException`1 :
Сущность 'KnowledgeArticle' не содержит атрибута с Name = 'name' и NameMapping = 'Logical'. MetadataCacheDetails: ProviderType = Dynamic, StandardCache = True, IsLoadedInStagedContext = False, Timestamp = 62358974, MinActiveRowVersion = 62358974 '
При отладке загрузка объекта LanguageLocale работает нормально, когда я оцениваю выражение для первого элемента моего набора:
var languageName = _XrmOrganizationService.Retrieve(SPRSet.First().LanguageLocaleId.LogicalName, SPRSet.First().LanguageLocaleId.Id, new ColumnSet("name")).ToEntity<Xrm.LanguageLocale>().Name
Другие сортировки по Title
или ArticlePublicNumber
работают нормально.
languagelocal
без имени? Ваш код выглядит нормально, и если вы даже можете получить первыйLanguageLocalId.Name
, я подозреваю, что проблема в данных. - person Filburt   schedule 17.12.2018LanguageLocale
с непустым свойствомName
. Изменить: на самом деле информация о языке требуется при создании новой статьи в CRM. - person S.Bo   schedule 17.12.2018