예제 #1
0
        public DNSRecordCollection WhereUpdated(DNSRecordCollection compareTo)
        {
            DNSRecordCollection newRecords     = this.WhereNew(compareTo);
            DNSRecordCollection updatedRecords = this.IntersectWith(compareTo, DNSRecordEqualityComparer.Instance);
            DNSRecordCollection updatedRecordsWithoutNewRecords = new DNSRecordCollection(updatedRecords.Except(newRecords, DNSRecordNameTypeEqualityComparer.Instance));

            return(Clone(updatedRecordsWithoutNewRecords));
        }
예제 #2
0
        private DNSRecordCollection ApplyToRecord(Action <DNSRecord> action)
        {
            DNSRecordCollection clone = Clone(this);

            foreach (DNSRecord dnsRecord in clone)
            {
                action(dnsRecord);
            }
            return(clone);
        }
예제 #3
0
 private static string?FindId(DNSRecord record, DNSRecordCollection dnsRecords)
 {
     return(dnsRecords.FirstOrDefault(r => r.Type == record.Type && r.Name == record.Name)?.Id);
 }
예제 #4
0
 private static DNSRecordCollection Clone(DNSRecordCollection from)
 {
     return(new DNSRecordCollection(from.Select(Map)));
 }
예제 #5
0
 public DNSRecordCollection WithUpdatedIdsFrom(DNSRecordCollection dnsRecords)
 {
     return(ApplyToRecord(d => d.Id = FindId(d, dnsRecords)));
 }
예제 #6
0
        private DNSRecordCollection IntersectWith(DNSRecordCollection compareTo, IEqualityComparer <DNSRecord> equalityComparer)
        {
            DNSRecordCollection records = new DNSRecordCollection(compareTo.Where(r => !this.Contains(r, equalityComparer)));

            return(records.Any() ? records : Empty());
        }
예제 #7
0
        public DNSRecordCollection WhereNew(DNSRecordCollection compareTo)
        {
            DNSRecordCollection newRecords = this.IntersectWith(compareTo, DNSRecordNameTypeEqualityComparer.Instance);

            return(Clone(newRecords));
        }