示例#1
0
        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");
        }
示例#2
0
        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();
            }
        }
示例#3
0
        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();
                }
            }
        }
示例#4
0
        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);
        }
示例#6
0
 protected override async Task OnInitializedAsync()
 {
   GeographyFacts = await Http.GetJsonAsync<GeographyData>("https://opentdb.com/api.php?amount=10&category=22&difficulty=medium&type=multiple");
 }