xElement Linq创建列表

本文关键字:列表 创建 Linq xElement | 更新日期: 2023-09-27 18:19:08

我已经创建了一个新的类来从xml文件中读取数据,它看起来像:

public class Validations
{
  public string id { get; set; }
  public List<string> lhsList { get; set; }
  public List<string> rhsList { get; set; }
}

XML我想读的是:

<root>
<Validation id="val3">
    <lhs id='Estimated' />
    <lhs id='Newqurter' />
    <rhs id='Current' />
    <rhs id='FirstQuarter' />
</Validation>
.
.
.
</root>
我写的读取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>();

如何读取List<lhsList> ?I tried

lhsList = ((xele.Elements().FirstOrDefault(p => p.Name == "lhs").FirstAttribute.Value).ToList(), 

但是它没有像预期的那样工作。还有其他的方法吗?

xElement Linq创建列表

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

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

选择xele的子lhs元素,然后选择它们的'id'属性的值。我将把它留给你去解决如何将它与你的代码合并。