那么,我的第一个问题是LINQ to XML顺序依赖吗?
鉴于XML(实际文件的简化版本):
<root>
<dl Id='111' Or='true' />
<dl Id='112' Or='false' />
</root>
容器:
public class root
{
public int Position { get; set; }
public int Id { get; set; }
public bool Or { get; set; }
}
读者代码:
var t = a.DescendantsAndSelf("root").Descendants("dl").Select(b => new root
{
Id = int.Parse(b.Attribute("Id").Value),
Or = bool.Parse(b.Attribute("Or").Value)
});
t
中的根元素是否始终按照从文件中读出的顺序排列?如果没有,有没有办法强制执行订购?
第二个问题,有没有办法自动在读者代码中添加一个数字,说明是从第一个,第二个,第三个等根读出来的XML?因此,在此示例中,t
将包含两个值为
答案 0 :(得分:4)
是的,LINQ是“依赖于订单”。您的对象按照它们在XML文件中出现的顺序创建。
要获得该职位,请使用包含索引的Select
版本:
var t = a.DescendantsAndSelf("root").Descendants("dl").Select((b,idx) => new root
{
Id = int.Parse(b.Attribute("Id").Value),
Or = bool.Parse(b.Attribute("Or").Value),
Position = idx+1
});