我只是想按他们的语言订购一组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 =动态,StandardCache = True,IsLoadedInStagedContext = False,时间戳= 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
上进行的其他排序都可以正常工作。