private void ClearExstensions(Content content, int[] exstensionContentIds, List <int> hashCodes) { int hashCode = content.GetHashCode(); if (hashCodes == null) { hashCodes = new List <int> { hashCode }; } else if (hashCodes.Contains(hashCode)) { return; } else { hashCodes.Add(hashCode); } var exstensions = content.Fields.OfType <ExtensionField>(); foreach (var field in exstensions) { if (field.ContentMapping.Values.Any(c => exstensionContentIds.Contains(c.ContentId))) { int[] ids = field.ContentMapping.Where(e => !exstensionContentIds.Contains(e.Value.ContentId)).Select(e => e.Key).ToArray(); foreach (int id in ids) { field.ContentMapping.Remove(id); } } foreach (var c in field.ContentMapping.Values) { ClearExstensions(c, exstensionContentIds, hashCodes); } } foreach (var field in content.Fields.OfType <EntityField>()) { ClearExstensions(field.Content, exstensionContentIds, hashCodes); } }