gpt4 book ai didi

c# - 不同语言的 Dynamics CRM 2011 OptionSetValue

转载 作者:行者123 更新时间:2023-11-30 21:01:04 25 4
gpt4 key购买 nike

谁能帮我弄清楚如何使用 CRM 2011 SDK 为一个选项集的标签检索不同的语言?

我的任务如下:例如,我与德语有联系,那么我的 sdk 应该给我带回该语言的选项集值。我联系的是英文国家,sdk 应该给我带回英文标签等等..

获取值没问题:

int optSetValue = ((OptionSetValue)entity["optionsetFieldName"]).value

但是我怎样才能获得正确语言的标签呢?

最佳答案

您需要执行 RetrieveAttributeRequest 来获取 EnumAttributeMetadata,然后根据语言代码查找正确的值:

string languageCode = germanLanguageCode; // Set
int optSetValue = 0; // Set
RetrieveAttributeRequest attributeRequest = new RetrieveAttributeRequest
{
EntityLogicalName = entityLogicalName,
LogicalName = attributeName,
RetrieveAsIfPublished = true
};

var response = (RetrieveAttributeResponse)service.Execute(attributeRequest);
var optionList = ((EnumAttributeMetadata)response.AttributeMetadata).OptionSet.Options;

return optionList.GetFirst(o => o.Value == optSetValue).Label.LocalizedLabels.First(l => l.LanguageCode == languageCode).Label;

或者,如果您的服务以德语用户身份运行,则您可以通过 return optionList.GetFirst(o => o.Value == optSetValue).Label.UserLocalizedLabel.Label; 访问德语文本;

我倾向于缓存元数据,而不是不断访问 CRM 服务器以获取文本信息。但话又说回来,我在一个只有英语的组织中,不必担心人们使用什么语言......

来自评论的补充回答

GetFirst() 只是一个标准的 Linq 方法。只要您在 using 语句中添加了 System.Linq 命名空间,任何 IEnumerable 都将拥有它。

德语位于 1031 .尽管更正确的途径是查找用户的 UsersSetting.UILanguageId。我相信应该包含正确的代码,虽然我还没有测试它......

关于c# - 不同语言的 Dynamics CRM 2011 OptionSetValue,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14480479/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com