2015-03-31 83 views
0

我有我需要检索显示名称的实体的逻辑名称列表。获取逻辑名称的显示名称

对于如我有

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

您应该能够检查for循环内的逻辑名称,并且应该能够实现您正在寻找的内容。 – Renjith 2015-04-01 04:20:43

回答

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和显示名字典时,您可以使用相同的逻辑。您从实体请求中得到的回复已经包含了所有的元数据,因此您不必花费太多时间筛选数据并获取所需内容。