Beispiel #1
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();
            }
        }
Beispiel #2
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();
                }
            }
        }
Beispiel #3
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);
        }
Beispiel #4
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");

        }