我想将XElement转换为我的对象列表。 我有“Car”对象,在帮助功能中我创建了XElement 当我用linq转换它时,我得到空列表。 这就是我写的:
public class Car
{
public int row{ get; set; };
public int seat{ get; set; }
public Car()
{
}
}
public static void help()
{
XElement root = new XElement("Car",
new XElement("seat",
new XElement("row", "4"),
new XElement("Chair", "2")),
new XElement("seat",
new XElement("row", "3"),
new XElement("Chair", "2")),
new XElement("seat",
new XElement("row", "5"),
new XElement("Chair", "2"))
);
List<Seat> a = root.Elements("Car").Select(s=>s.Element("seat")).Select(sv => new Car()
{
row= (int)sv.Element("row"),
seat= (int)sv.Element("Chair")
}).ToList();
}
答案 0 :(得分:2)
List<Car> list = root.Elements("seat").Select(sv => new Car()
{
row = (int)sv.Element("row"),
seat = (int)sv.Element("Chair")
}).ToList();
使用root
,您已经在Car
元素的“内部”。
请注意,您可以创建一个完整的XDocument
:
var doc = new XDocument(root);
List<Car> list2 = doc.Elements("Car").Elements("seat").Select(sv => new Car()
{
row = (int)sv.Element("row"),
seat = (int)sv.Element("Chair")
}).ToList();
通过这种方式,doc
将位于Car
元素的“外部”。
你甚至可以:
List<Car> list3 = doc.Root.Elements("seat").Select(sv => new Car()
{
row = (int)sv.Element("row"),
seat = (int)sv.Element("Chair")
}).ToList();