public static void SetIdentifiers(FI fi, IdentifierType identifierType, string[] identifiers, SymmetryEntities dc) { IList<FIIdentifier> list = null; { var currentIDs = fi.FIIdentifiers.Where(x => x.IdentifierType == identifierType); if (currentIDs != null && currentIDs.Any()) list = currentIDs.ToList(); } foreach (var identifier in identifiers) { if (string.IsNullOrEmpty(identifier)) continue; if (list == null) { fi.FIIdentifiers.Add(new FIIdentifier { IdentifierType = identifierType, Identifier = identifier }); } else if (list.Any(x => string.Compare(x.Identifier, identifier, true) == 0)) // already exists { list.Remove(list.First(x => string.Compare(x.Identifier, identifier, true) == 0)); // remove from the list of existing } else { fi.FIIdentifiers.Add(new FIIdentifier { IdentifierType = identifierType, Identifier = identifier }); } } // if we have any left in the original list, then remove them all if (list != null && list.Any()) foreach (var v in list) dc.Entry(v).State = EntityState.Deleted; }