private static bool CompareRecords ( MarcRecord mainRecord, MarcRecord backupRecord ) { bool result = true; int[] tags = mainRecord.Fields .Select(field => field.Tag) .Where(tag => !tag.OneOf(ResiduaryTags)) .Distinct() .OrderBy(tag => tag) .ToArray(); foreach (int tag in tags) { int count = mainRecord.Fields.GetFieldCount(tag); for (int occ = 0; occ < count; occ++) { RecordField firstField = mainRecord.Fields.GetField(tag, occ) .ThrowIfNull("firstField"); RecordField secondField = backupRecord.Fields.GetField(tag, occ); if (ReferenceEquals(secondField, null)) { Console.WriteLine("{0}/{1}\t{2}", tag, occ + 1, firstField.ToText()); Console.WriteLine("\t--нет--"); result = false; } else { secondField.UserData = true; if (firstField.ToString() != secondField.ToString()) { Console.WriteLine("{0}/{1}\t{2}", tag, occ + 1, firstField.ToText()); Console.WriteLine("\t{0}", secondField.ToText()); result = false; } } } } RecordField[] backupOnly = backupRecord.Fields .Where(field => !field.Tag.OneOf(ResiduaryTags)) .Where(field => ReferenceEquals(field.UserData, null)) .ToArray(); if (backupOnly.Length != 0) { Console.WriteLine("Только в BACKUP:"); foreach (RecordField field in backupOnly) { Console.WriteLine("{0}/{1}\t{2}", field.Tag, field.Repeat + 1, field.ToText()); result = false; } } return(result); }
public void RecordField_ToString_1() { RecordField field = _GetField(); string actual = field.ToString(); int result = string.CompareOrdinal ( "200#Значение^aЗаглавие^eподзаголовочные^fоб ответственности", actual ); Assert.AreEqual ( 0, result ); }
public async Task <List <Record> > GetRecordsByFieldAsync(RecordField field) { var result = Regex.Replace(field.ToString(), "([a-z])([A-Z])", "$1_$2").ToLower(); return(await _formatter.DeserializeAsync <List <Record> >($"records/{result}")); }