xElement Linq创建列表

San*_*ile 5 c# xml xelement class

我创建了新类来从xml文件中读取数据.

我已宣布上课了

public class Validations
{
  public string id { get; set; }
  public List<string> lhsList { get; set; }
  public List<string> rhsList { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

XML 我想读的是

<root>
<Validation id="val3">
    <lhs id='Estimated' />
    <lhs id='Newqurter' />
    <rhs id='Current' />
    <rhs id='FirstQuarter' />
</Validation>
.
.
.

</root>
Run Code Online (Sandbox Code Playgroud)

代码我写的是读取xml的

List<Validations> vList = new List<Validations>();
vList = (from XElement xele in xdoc.Root.Elements()
  select new Validations
  { 
    id = xele.Attribute("id").Value.ToString(),
    // lhsList = ((xele.Elements().FirstOrDefault(p => p.Name == "lhs").FirstAttribute.Value
    // rhsList = ((xele.Elements().FirstOrDefault(p => p.Name == "rhs").FirstAttribute.Value
  }
).ToList<Validations>();
Run Code Online (Sandbox Code Playgroud)

怎么看清单?我试过了

lhsList = ((xele.Elements().FirstOrDefault(p => p.Name == "lhs").FirstAttribute.Value).ToList(), 
Run Code Online (Sandbox Code Playgroud)

但它不起作用.有什么其他方法可以做到这一点?

Col*_*inE 7

您可以lhs按如下方式创建元素列表:

List<string> lhsElements = xele.Elements("lhs")
                               .Select(el => el.Attribute("id").Value)
                               .ToList();
Run Code Online (Sandbox Code Playgroud)

这将选择所有子lhs元素xele,然后选择其"id"属性的值.我将留给您研究如何将其与您的代码合并.