Ciao a tutti, è la prima volta che intervengo in questo forum, ho cercato a lungo ma non riesco a trovare una soluzione a un problema abbastanza strano con silverlight e linq.
Ho un file xml con i dettagli di una rubrica di persone e numeri di telefono.
XDocument doc = XDocument.Load("Xml/PersonsData.xml");
var query = doc.Descendants("person").
Select<XElement, Person>(p => new Person()
{
Name = p.Attribute("name").Value,
Surname = p.Attribute("surname").Value,
Address = p.Attribute("address").Value,
PhoneNumber = p.Attribute("phone").Value,
Image = new BitmapImage(new Uri(_imageDataPath + p.Attribute("img").Value + ".jpg", UriKind.Relative)),
ImagePath = ""
}
);
int aSimpleVariable = 110;
this.DebugText.Text += aSimpleVariable.ToString() + "\n";
Questo codice funziona e infatti alla fine visualizza il numero 110 in una casella di testo.
Se però chiamo il metodo ToList<Person>() alla fine della query, oppure meglio: se eseguo un ciclo foreach su query per visualizzare le Persone, una volta uscito dal ciclo tutto il codice che è scritto dopo non funziona ecco qua un esempio
XDocument doc = XDocument.Load("Xml/PersonsData.xml");
var query = doc.Descendants("person").
Select<XElement, Person>(p => new Person()
{
Name = p.Attribute("name").Value,
Surname = p.Attribute("surname").Value,
Address = p.Attribute("address").Value,
PhoneNumber = p.Attribute("phone").Value,
Image = new BitmapImage(new Uri(_imageDataPath + p.Attribute("img").Value + ".jpg", UriKind.Relative)),
ImagePath = ""
}
);
int aSimpleVariable = 110;
foreach(var p in query)
{
aSimpleVariable++;
/* qui viene corettamente stampato 110, 111, 112 ecc... */
this.DebugText.Text += aSimpleVariable.ToString() + "\n";
}
/* da qui in poi non funziona + nulla infatti la variabile non viene + stampata */
this.DebugText.Text += aSimpleVariable.ToString() + "\n";
Come mai questo comportamento con Silvelight?? il codice funziona correttamente per esempio in una Console Application!
Grazie
ciao a tutti