示例#1
0
        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);
        }
示例#2
0
        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
            );
        }
示例#3
0
        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}"));
        }