public static IEnumerable <UNLOCODEEntity> Parse(string path) { using (var file = new StreamReader(path)) { string line; while ((line = file.ReadLine()) != null) { if (string.IsNullOrWhiteSpace(line)) { continue; } if (line.TrimStart().StartsWith("#")) { continue; } var parse = line.Split(new char[] { '\t' }); var entity = UNLOCODEEntity.Parse(parse); yield return(entity); } } }
public static UNLOCODEEntity Parse(string[] parts) { var entity = new UNLOCODEEntity(); if (parts.Length != 3) { throw new ArgumentException("Expecting at least 4 columns as input"); } var country = parts[0]; var location = parts[1]; var geonameIdRaw = parts[2]; entity.UNLOCODECode = $"{country.ToLowerInvariant()}{location.ToLowerInvariant()}"; int geonameId; if (int.TryParse(geonameIdRaw, out geonameId)) { entity.GeonameId = geonameId; } else { throw new ArgumentException("Could not parse Geonames ID"); } return(entity); }