public void RetrieveAttributes() { var entity = CmbEntities.SelectedItem as ObjectCollectionItem <EntityMetadata>; if (entity == null) { return; } WorkAsync(new WorkAsyncInfo("Retrieving Attributes...", e => { e.Result = Service.Execute(new RetrieveEntityRequest { LogicalName = entity.Value.LogicalName, EntityFilters = EntityFilters.Attributes, RetrieveAsIfPublished = true }); }) { PostWorkCallBack = e => { try { CmbAttributes.BeginUpdate(); CmbAttributes.Items.Clear(); CmbAttributes.Text = null; var result = ((RetrieveEntityResponse)e.Result).EntityMetadata.Attributes. Where(a => (SelectOptionSetsForEntity && (a.AttributeType == AttributeTypeCode.Picklist || a.AttributeType == AttributeTypeCode.State || a.AttributeType == AttributeTypeCode.Status)) || a.IsLocalOptionSetAttribute()). Select(a => new ObjectCollectionItem <AttributeMetadata>(a.SchemaName + " (" + a.LogicalName + ")", a)). OrderBy(r => r.DisplayName); CmbAttributes.Items.AddRange(result.Cast <object>().ToArray()); } finally { CmbAttributes.EndUpdate(); Enable(true); } } }); }