我正在学习LINQ to XML。
说我有这样的xml:
<main>
<machine>
<car name="HONDA">
<model name="ACCORD"/>
</car>
<car name="HONDA">
<model name="CRV"/>
</car>
<car name="FORD">
<model name="FOCUS"/>
</car>
etc.......
</machine>
</main>
我有一个名为的对象:
public class MyCar
{
public MyCar() { }
public MyCar(string m1, string m2)
{
Make = m1;
Model = m2;
}
public string Make { get; set; }
public string Model{ get; set; }
}
使用LINQ如何在语句中完成“模型”的设置?
var cars = from g in doc.Elements("main").Descendants("machine")
select g;
var listCars = from c in cars.Descendants("car")
select new MyCar
{
Make = c.Attribute("name").Value,
Model= ""
};
我正在使用4.0框架。
答案 0 :(得分:2)
您可以使用Element
方法:
var listCars = from c in cars.Descendants("car")
select new MyCar
{
Make = c.Attribute("name").Value,
Model= c.Element("model").Attribute("name").Value
};
如果您将xml架构更改为您在评论中显示的内容,则可以过滤汽车,例如,这样:
var listCars = from c in cars.Descendants("car")
let doors= c.Elements("model").FirstOrDefault(e=>e.Attribute("name").Value=="doors")
where doors!=null && doors.Value=="4 Doors"// this way you can get the cars that only have 4 doors
select new MyCar
{
Make = c.Attribute("name").Value,
//...
};