2015-03-31 88 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和顯示名字典時,您可以使用相同的邏輯。您從實體請求中得到的回覆已經包含了所有的元數據,因此您不必花費太多時間篩選數據並獲取所需內容。