Я могу сделать в трех инструкциях. Я использовал словарь с xml linq:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
using System.Xml.Linq;
namespace ConsoleApplication1
{
class Program
{
const string FILENAME = @"c:\temp\test.xml";
static void Main(string[] args)
{
XDocument doc = XDocument.Load(FILENAME);
Dictionary<string, Predstava> dict = doc.Descendants("predstava").Select(x => new Predstava() {
id = (string)x.Attribute("id"),
naziv = (string)x.Attribute("naziv"),
glumac = x.Descendants("glumac").Select(y => (int)y).ToList()
})
.GroupBy(x => x.id, y => y)
.ToDictionary(x => x.Key, y => y.FirstOrDefault());
string[] results = doc.Descendants("prikazivanje").Select(x => string.Format("{0} - {1}.{2,2:00}.{3}. u {4} sati",
dict[(string)x.Attribute("predstava")].naziv,
(string)x.Attribute("pocetak_dan"),
(int)x.Attribute("pocetak_mjesec"),
(string)x.Attribute("pocetak_godina"),
(string)x.Attribute("pocetak_vrijeme")
)).ToArray();
}
}
public class Predstava
{
public string id { get; set; }
public string naziv { get; set; }
public List<int> glumac { get; set; }
}
}
Если вам нужно отсортировать по дате, используйте следующее:
string[] results = doc.Descendants("prikazivanje").Select(x => new { predstava = dict[(string)x.Attribute("predstava")].naziv, date = new DateTime(
(int)x.Attribute("pocetak_godina"),
(int)x.Attribute("pocetak_mjesec"),
(int)x.Attribute("pocetak_dan"),
int.Parse(((string)x.Attribute("pocetak_vrijeme")).Substring(0,2)),
int.Parse(((string)x.Attribute("pocetak_vrijeme")).Substring(3,2)),
0)})
.OrderBy(x => x.date)
.Select(x => string.Format("{0} - {1}",
x.predstava,
x.date.ToString(@"dd.MM.yyyy. u HH:mm \sa\ti")))
.ToArray();