using System; using System.IO; using System.Linq; using System.Text; using System.Xml.Linq; class Program { static void Main() { Console.OutputEncoding = Encoding.UTF8; // Sama nimi kuin sun tiedosto (pidä XML samassa kansiossa kuin ohjelma) string xmlPolku = "Osoitetoimipaikat.xml"; if (!File.Exists(xmlPolku)) { Console.WriteLine($"Tiedostoa ei löydy: {xmlPolku}"); Console.WriteLine("Varmista, että XML on samassa kansiossa kuin ohjelma (exe) tai anna oikea polku."); return; } XDocument doc; try { doc = XDocument.Load(xmlPolku); } catch (Exception ex) { Console.WriteLine("XML:n lukeminen epäonnistui: " + ex.Message); return; } Console.Write("Anna kunta (esim. Helsinki): "); string kuntaHaku = (Console.ReadLine() ?? "").Trim(); if (kuntaHaku.Length == 0) { Console.WriteLine("Kunta ei voi olla tyhjä."); return; } var tulokset = doc .Descendants("PostinumeroTietue") .Select(t => new { Postinumero = (string?)t.Element("Postinumero") ?? "", Osoitetoimipaikka = (string?)t.Element("Osoitetoimipaikka") ?? "", Kunta = (string?)t.Element("Kunta") ?? "" }) .Where(x => x.Kunta.Equals(kuntaHaku, StringComparison.OrdinalIgnoreCase)) .OrderBy(x => x.Postinumero) .ThenBy(x => x.Osoitetoimipaikka) .ToList(); if (tulokset.Count == 0) { Console.WriteLine($"Ei löytynyt tietoja kunnalle: {kuntaHaku}"); return; } Console.WriteLine($"\nKunnan {kuntaHaku} postinumerot ja osoitetoimipaikat ({tulokset.Count} kpl):\n"); foreach (var r in tulokset) { Console.WriteLine($"{r.Postinumero} {r.Osoitetoimipaikka}"); } } }