private static string GetEntityDisplayString(IExecutionContainer container, DataBlockImportMatch match, Entity cdEntity) { var unique = new List <string>(); if (match != null && match.Attribute.Length > 0) { foreach (var attribute in match.Attribute) { var matchdisplay = attribute.Display; if (string.IsNullOrEmpty(matchdisplay)) { matchdisplay = attribute.Name; } var matchvalue = "<null>"; if (cdEntity.Contains(matchdisplay, true)) { if (cdEntity[matchdisplay] is EntityReference) { // Don't use PropertyAsString, that would perform GetRelated that we don't want due to performance var entref = cdEntity.GetAttribute <EntityReference>(matchdisplay, null); if (!string.IsNullOrEmpty(entref.Name)) { matchvalue = entref.Name; } else { matchvalue = entref.LogicalName + ":" + entref.Id.ToString(); } } else { matchvalue = container.Attribute(matchdisplay).On(cdEntity).ToString(); } } unique.Add(matchvalue); } } if (unique.Count == 0) { unique.Add(cdEntity.Id.ToString()); } return(string.Join(", ", unique)); }