2012-09-13 4 views
5

Ich habe mich in den Server und ich habe (hoffentlich) den richtigen Datensatz abgerufen. Dann habe ich versucht, alle Firmen mit dem folgenden Code aufzulisten.Finden Sie die Namen aller Attribute in einer Entität aus CRM Dynamics

EntityCollection result = proxy.RetrieveMultiple(expression); 
foreach (var entity in result.Entities) 
{ 
    String output = String.Empty; 
    if (entity.Attributes.Contains("account")) 
    output = entity.Attributes["account"].ToString(); 
} 

Allerdings wäre es schön, eine innere Schleife auszuführen, die in result.Entities durch alle verfügbaren Attribute geht. Sollte ich entity.Attributes.Keys verwenden oder gibt es eine bessere Methode?

Antwort

8

Ich denke, das sollte den Trick tun.

foreach (Entity entity in result.Entities) 
{ 
    foreach (KeyValuePair<String, Object> attribute in entity.Attributes) 
    { 
     Console.WriteLine(attribute.Key + ": " + attribute.Value); 
    } 
} 
+0

OK, also war ich auf dem richtigen Weg. Ich hatte Angst, dass die Empfehlung für von Dynamics übernommene Entitäten anders gehandhabt werden sollte. Ich habe auch eine kleine Änderung an Ihrem Beispiel vorgenommen. –

0

Dies führt die Aufgabe mit einem Lambda-Ausdruck aus.

EntityCollection result = proxy.RetrieveMultiple(expression); 
foreach (var entity in result.Entities) 
{ 
    var vsHeaders = entity.Attributes.Select(kvp => string.Format("{0}", kvp.Key)); 
    string sHeaders = string.Join(",", vsHeaders); 
}