我有一个我需要检索显示名称的实体的逻辑名称列表。
例如我有
List<string> _list=new List<string>();
_list.Add("address_City")
_list.Add("first_name")
它们的显示名称是地址城市和名字
RetrieveEntityRequest req = new RetrieveEntityRequest();
req.RetrieveAsIfPublished = true;
req.LogicalName = "account";
req.EntityFilters = EntityFilters.Attributes;
RetrieveEntityResponse resp = (RetrieveEntityResponse)_orgService.Execute(req);
for (int iCnt = 0; iCnt < resp.EntityMetadata.Attributes.ToList().Count; iCnt++)
{
if(resp.EntityMetadata.Attributes.ToList()[iCnt].DisplayName.LocalizedLabels.Count>0)
{
string displayName = resp.EntityMetadata.Attributes.ToList()[iCnt].DisplayName.LocalizedLabels[0].Label;
string logicalName = resp.EntityMetadata.Attributes.ToList()[iCnt].LogicalName;
}
}
这段代码检索所有记录。有没有办法创建一些自定义查询,我可以传递这个List<string>
并检索显示名称?
答案 0 :(得分:3)
Linq会很棒。只需获取逻辑名称列表并返回显示名称列表,如下所示:
List<string> _list = new List<string>()
{
"address_City",
"first_name"
};
List<string> _displayList = new List<string>();
if (entityMetaData.Attributes.Any())
{
_displayList.AddRange(from lName in _list
select (entityMetaData.Attributes.FirstOrDefault(n => n.LogicalName.Equals(lName)))
into attribute
where attribute.DisplayName.UserLocalizedLabel != null
select attribute.DisplayName.UserLocalizedLabel.Label);
}
使用logicalName和displayName返回字典时,可以使用相同的逻辑。您对实体请求的回复已经包含了所有元数据,因此您不会浪费太多时间来筛选数据并获得所需内容。