public static void Main(string[] args) { var geographyData = new GeographyData(); var data = geographyData.Countries.Include("Monasteries") .Where(c => c.Monasteries.Any()) .OrderBy(c => c.CountryName) .Select(c => new { Country = new { Name = c.CountryName }, Monasteries = c.Monasteries .OrderBy(m => m.Name) .Select(m => new { m.Name }) }).ToList(); List <dynamic> newData = new List <dynamic>(); foreach (var item in data) { newData.Add(item); } var exporter = new ExportToXml(newData); exporter.ExportDataToFile("monasteries.xml"); }
public static void Main(string[] args) { XDocument queryXml = XDocument.Load("../../rivers-query.xml"); var queries = queryXml.Root.Elements(); using (XmlWriter writer = XmlWriter.Create("../../results.xml")) { writer.WriteStartDocument(); writer.WriteStartElement("results"); var geographyData = new GeographyData(); foreach (var query in queries) { var countries = query.Elements("country").Select(country => country.Value).ToList(); var riversQuery = geographyData.Rivers.AsQueryable(); riversQuery = countries.Aggregate( riversQuery, (current, country) => current.Where(r => r.Countries.Any(c => c.CountryName == country))) .OrderBy(r => r.RiverName); var riverNamesQuery = riversQuery.Select(r => r.RiverName); var totalCount = riverNamesQuery.Count(); var maxResults = query.Attribute("max-results"); if (maxResults != null) { riverNamesQuery = riverNamesQuery.Take(int.Parse(maxResults.Value)); } var riverNames = riverNamesQuery.ToList(); var listedCount = riverNames.Count(); writer.WriteStartElement("rivers"); writer.WriteAttributeString("total-count", totalCount.ToString()); writer.WriteAttributeString("listed-count", listedCount.ToString()); foreach (var riverName in riverNames) { writer.WriteStartElement("river"); writer.WriteAttributeString("name", riverName); writer.WriteEndElement(); } writer.WriteEndElement(); } writer.WriteEndElement(); writer.WriteEndDocument(); } }
public static void Main(string[] args) { XDocument riversDocument = XDocument.Load("../../rivers.xml"); var context = new GeographyData(); if (riversDocument.Root != null) { var riversXml = riversDocument.Root.Elements(); foreach (var riverXml in riversXml) { var river = new River { RiverName = riverXml.Elements("name").First().Value, Length = int.Parse(riverXml.Elements("length").First().Value), Outflow = riverXml.Elements("outflow").First().Value }; var drainageArea = riverXml.Descendants("drainage-area").FirstOrDefault(); if (drainageArea != null) { river.DrainageArea = int.Parse(drainageArea.Value); } var averageDischarge = riverXml.Descendants("average-discharge").FirstOrDefault(); if (averageDischarge != null) { river.AverageDischarge = int.Parse(averageDischarge.Value); } // Parse the countries for the river var countryNodes = riverXml.XPathSelectElements("countries/country"); foreach (var countryNode in countryNodes) { var country = context.Countries. FirstOrDefault(c => c.CountryName == countryNode.Value); if (country == null) { throw new Exception("Can not find country: " + countryNode.Value); } river.Countries.Add(country); } context.Rivers.Add(river); context.SaveChanges(); } } }
public static void Main(string[] args) { var geographyData = new GeographyData(); var riversData = geographyData.Rivers.Include("Countries") .OrderBy(r => r.Length) .Select( r => new { riverName = r.RiverName, riverLength = r.Length, countries = r.Countries.OrderBy(c => c.CountryName).Select(c => c.CountryName) }); var jsonData = JsonConvert.SerializeObject(riversData); File.WriteAllText("rivers.json", jsonData); }
public static PostalCodesCities GetPostalCodesCities(string countryCode) { List <PostalCodeData> postalCodeArray = new List <PostalCodeData>(); List <CityData> cityArray = new List <CityData>(); List <GeographyData> geographyArray = new List <GeographyData>(); PostalCodes codes = PostalCodes.ForCountry(countryCode); Country country = Country.FromCode(countryCode); int maxPostalCodeLength = 0; foreach (PostalCode code in codes) { PostalCodeData dataPoint = new PostalCodeData { Code = code.PostalCode, CityId = code.CityId }; if (code.PostalCode.Length > maxPostalCodeLength) { maxPostalCodeLength = code.PostalCode.Length; } postalCodeArray.Add(dataPoint); } Cities cities = Cities.ForCountry(countryCode); foreach (City city in cities) { CityData dataPoint = new CityData { Id = city.Identity, Name = city.Name, GeographyId = city.GeographyId }; cityArray.Add(dataPoint); } Geographies geographies = Country.FromCode(countryCode).Geography.ThisAndBelow(); foreach (Geography geography in geographies) { GeographyData dataPoint = new GeographyData { Id = geography.Identity, Name = geography.Name }; geographyArray.Add(dataPoint); } PostalCodesCities result = new PostalCodesCities { PostalCodes = postalCodeArray.ToArray(), CityNames = cityArray.ToArray(), Geographies = geographyArray.ToArray(), PostalCodeLength = country.PostalCodeLength, PostalCodeLengthCheck = maxPostalCodeLength }; return(result); }
protected override async Task OnInitializedAsync() { GeographyFacts = await Http.GetJsonAsync<GeographyData>("https://opentdb.com/api.php?amount=10&category=22&difficulty=medium&type=multiple"); }