コード例 #1
0
        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;
        }