public int CompareTo(WinnerFirstVotesModel other) { return(Wahlkreis.CompareTo(other.Wahlkreis)); }
static void Main(string[] args) { string resultsUrl = "http://www.bundeswahlleiter.de/de/bundestagswahlen/BTW_BUND_09/ergebnisse/wahlkreisergebnisse/"; string bundeslandPageContent = DownloadPage(resultsUrl); if (bundeslandPageContent == null) { Console.WriteLine("Bundesländer konnten nicht geladen werden. Abbruch."); return; } SimpleListItem[] bundeslandList = ParseSimpleList(bundeslandPageContent); List<Bundesland> bundeslaender = new List<Bundesland>(); foreach(var curBundesland in bundeslandList) { Bundesland newBL = new Bundesland(); newBL.Name = curBundesland.Name; newBL.Wahlkreise = new List<Wahlkreis>(); string blUri = resultsUrl + curBundesland.Link; Console.WriteLine("Parse Bundesland " + curBundesland.Name + " ..."); //Parse Wahlkreise string blWahlkreisePageContent = DownloadPage(blUri); if (blWahlkreisePageContent == null) { Console.WriteLine("Wahlkreise konnten nicht geladen werden. Abbruch."); return; } SimpleListItem[] blWahlkreiseList = ParseSimpleList(blWahlkreisePageContent); foreach (var curWahlkreis in blWahlkreiseList) { Wahlkreis newWK = new Wahlkreis(); Match wkNameMatch = WahlkreisNameRegex.Match(curWahlkreis.Name); if (wkNameMatch.Success) { newWK.Name = wkNameMatch.Groups["name"].Value; newWK.Nr = int.Parse(wkNameMatch.Groups["nr"].Value); } else newWK.Name = curWahlkreis.Name; Console.WriteLine(" Parse Wahlkreis " + newWK.Name + " ..."); //Parse Ergebnisse string wkErgebnisPageContent = DownloadPage(blUri + curWahlkreis.Link); if (wkErgebnisPageContent == null) { Console.WriteLine("Wahlkreise-Ergebnis konnte nicht geladen werden. Abbruch."); return; } var wkVotes = ParseVoteList(wkErgebnisPageContent); newWK.Wahlberechtigte = wkVotes["Wahlberechtigte"]; wkVotes.Remove("Wahlberechtigte"); newWK.Waehler = wkVotes["Wähler"]; wkVotes.Remove("Wähler"); newWK.Ungueltige = wkVotes["Ungültige"]; wkVotes.Remove("Ungültige"); newWK.Gueltige = wkVotes["Gültige"]; wkVotes.Remove("Gültige"); newWK.Parteien = new List<Partei>(); foreach (var curPartei in wkVotes) { Partei newPartei = new Partei() { Id=GetParteiId(curPartei.Key), Ergebnis=curPartei.Value}; newWK.Parteien.Add(newPartei); } newBL.Wahlkreise.Add(newWK); } bundeslaender.Add(newBL); } //Write to CSV StreamWriter csvWriter = new StreamWriter("Ergebnisse2009.csv", false, Encoding.UTF8); csvWriter.WriteLine("Bundestagswahl 2009"); csvWriter.WriteLine("Endgültig"); csvWriter.Write("Nr,Gebiet,gehört,Wahlberechtigte,,,,Wähler,,,,Ungültige,,,,Gültige,,,,"); foreach (string curPartei in ParteienDict.Keys) csvWriter.Write(curPartei + ",,,,"); csvWriter.Write(Environment.NewLine); csvWriter.Write(",,zu,"); for (int a = 1; a < CurParteienDictKey + 4; a++) csvWriter.Write("Erststimmen,,Zweitstimmen,,"); csvWriter.Write(Environment.NewLine); csvWriter.Write(",,,"); for (int a = 1; a < CurParteienDictKey + 4; a++) csvWriter.Write("Endgültig,,"); int CurBundeslandId = 1; foreach (var curBL in bundeslaender) { foreach(var curWK in curBL.Wahlkreise) { csvWriter.Write(curWK.Nr + ","); csvWriter.Write("\"" + curWK.Name + "\","); csvWriter.Write(CurBundeslandId + ","); WriteVotes(csvWriter, curWK.Wahlberechtigte); WriteVotes(csvWriter, curWK.Waehler); WriteVotes(csvWriter, curWK.Ungueltige); WriteVotes(csvWriter, curWK.Gueltige); foreach (var curPartei in ParteienDict) { bool foundPartei = false; foreach (var curWkPartei in curWK.Parteien) { if (curPartei.Value == curWkPartei.Id) { WriteVotes(csvWriter, curWkPartei.Ergebnis); foundPartei = true; } } if (!foundPartei) csvWriter.Write(",,,,"); } csvWriter.Write(Environment.NewLine); } csvWriter.Write(CurBundeslandId + ","); csvWriter.Write("\"" + curBL.Name + "\","); csvWriter.Write("99"); csvWriter.Write(Environment.NewLine); csvWriter.Write(Environment.NewLine); CurBundeslandId++; } csvWriter.Write("99,\"Bundesgebiet\""); csvWriter.Write(Environment.NewLine); csvWriter.Close(); Console.ReadLine(); }