2009-10-21 132 views
0

我有以下XML在多个位置使用名称“部件”。我只想访问名为“Part”的第一级元素,而不是用于我的Linq表达式来拾取名为“Part”的子元素。我已经使用了以下Linq来完成我想要的功能,但看起来有点麻烦。可以改进吗?从XML创建对象

<Stuff> 
    <Parts> 
    <Part> 
    <A> 
     <Part> 
     <B>10</B> 
     </Part> 
    </A> 
</Part> 
    <Part> 
    <A> 
     <Part> 
     <B>10</B> 
     </Part> 
    </A> 
    </Part> 
</Parts> 
</Stuff> 


var pbp = data.Descendants("Part") 
      .Where(b => b.Parent == data.Element("Parts")) 
      .Select(b => (Part)Deserialise(b.ToString(), typeof(Part))); 

return pbp.ToList(); 

回答

1

你喜欢那种形式吗?

var pbp = from p in data.Element("Parts").Elements("Part") 
      select (Part)Deserialise(p.ToString(), typeof(Part)); 
return pbp.ToList(); 
+0

谢谢,这工作正常。 – Retrocoder