xElement Linq 创建列表
Posted
技术标签:
【中文标题】xElement Linq 创建列表【英文标题】:xElement Linq Creating List 【发布时间】:2012-01-30 10:13:18 【问题描述】:我创建了一个新类来从 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>
?
我试过了
lhsList = ((xele.Elements().FirstOrDefault(p => p.Name == "lhs").FirstAttribute.Value).ToList(),
但它没有按预期工作。还有什么其他方法可以做到这一点?
【问题讨论】:
“不工作”是一个很差的问题描述。 不应该这行 ).ToListToString()
之后我没有得到那个选项
【参考方案1】:
您可以按如下方式创建lhs
元素列表:
List<string> lhsElements = xele.Elements("lhs")
.Select(el => el.Attribute("id").Value)
.ToList();
这会选择所有lhs
元素,它们是xele
的子元素,然后选择它们的“id”属性的值。我将留给您解决如何将其与您的代码合并。
【讨论】:
成功了。谢谢。我会永远记住这个方法。关于 xml 有很多东西要学。哇。 :-) 当然……只需将此代码放在验证初始化块中。以上是关于xElement Linq 创建列表的主要内容,如果未能解决你的问题,请参考以下文章
Linq-to-XML XElement.Remove() 留下不需要的空白