/ / Da Linq a XML: posso farlo con listbox ma non con un elenco <> - c #, linq, linq-to-xml

Da Linq a XML: posso farlo con listbox ma non con un elenco <> - c #, linq, linq-to-xml

Ecco come formare il mio xml da un ListBox

   new XElement("City", lstCities.Items
.Cast<ListItem>()
.Select(x => new XElement("TBL_Cities",
new XElement ("CityName",x.Text),
new XElement("TripID",TripID)))

Ora forse è perché è vicino alla fine digiorno, ma non riesco a capire come farlo con una lista <> Ho (la sua lista lstImages) voglio sostanzialmente scrivere il file di byte su xml, come le città (dato che ci sono 1-3 immagini all'interno della lista)

Ecco la parte che non funziona

new XElement("TBL_Photo",lstImages
.Cast<byte>()
.Select(x => new XElement("TBL_Photo",
new XElement ("Photo",x),
new XElement("TripID",TripID))))

risposte:

1 per risposta № 1

Per quanto posso dire, il tuo codice contro il List<byte> è per lo più corretto. Hai una chiamata non necessaria a .Cast (ma non rovinerà nulla). Il tuo problema principale sembra essere una parentesi chiusa, a meno che non ci sia più codice che non ci stai mostrando.

new XElement("TBL_Photo",
lstImages.Select(x => new XElement("TBL_Photo",
new XElement ("Photo",x),
new XElement("TripID",TripID)))

1 per risposta № 2

Ciò dipenderà dal modo in cui listImages è definito, ma assumendo che sia a List<List<byte>>, allora solo

  new XElement("TBL_Photo",lstImages
//.Cast<byte>()  Not needed
.Select(x => new XElement("TBL_Photo",
new XElement ("Photo",x),
new XElement("TripID",TripID))))

Ciò presuppone che XElement consenta List come parametro.

Non hai bisogno del cast qui. Ne hai solo bisogno perché lstCities.Items era un ListItemCollection, che non implementa IEnumerable<ListItem>.