public static IEnumerable<AddressPartReduction> ParseItems(Stream ms) { DbfFile dbfFile = new DbfFile(Encoding.GetEncoding(866)); dbfFile.Open(ms); try { DbfHeader header = dbfFile.Header; dynamic headerObj = new { LEVEL = FindColumnOrThrow(header, "LEVEL", maxLen: 5), SCNAME = FindColumnOrThrow(header, "SCNAME", maxLen: 10), SOCRNAME = FindColumnOrThrow(header, "SOCRNAME", maxLen: 29), // KOD_T_ST = FindColumnOrThrow(header, "KOD_T_ST", maxLen: 3), }; IEnumerable<DbfRecord> records = EnumRecords(dbfFile, header); foreach (var record in records) { var item = new AddressPartReduction() { Level = int.Parse(record[headerObj.LEVEL].Trim()), Short = record[headerObj.SCNAME].Trim(), Name = record[headerObj.SOCRNAME].Trim(), // KOD_T_ST = record[headerObj.KOD_T_ST].Trim(), }; yield return item; } } finally { dbfFile.Close(); } }
private static void Insert(Dictionary<int, Dictionary<string, AddressPartReduction>> reductions, AddressPartReduction d) { if (!reductions.ContainsKey(d.Level)) { reductions.Add(d.Level, new Dictionary<string, AddressPartReduction>()); } var dict = reductions[d.Level]; var reduction = d.Short.ToLower(); dict.Add(reduction, d); }
private static void EqualTo(AddressPartReduction actual, AddressPartReduction expected) { Assert.IsNotNull(actual); Assert.That(actual.Level, Is.EqualTo(expected.Level)); Assert.That(actual.Short, Is.EqualTo(expected.Short)); Assert.That(actual.Name, Is.EqualTo(expected.Name)); }