我有一个xml文档,其中包含以下内容:
- <LabelFieldBO>
<Height>23</Height>
<Width>100</Width>
<Top>32</Top>
<Left>128</Left>
<FieldName>field4</FieldName>
<Text>aoi_name</Text>
<DataColumn>aoi_name</DataColumn>
<FontFamily>Arial</FontFamily>
<FontStyle>Regular</FontStyle>
<FontSize>8.25</FontSize>
<Rotation>0</Rotation>
<LabelName />
<LabelHeight>0</LabelHeight>
<LabelWidth>0</LabelWidth>
<BarCoded>false</BarCoded>
</LabelFieldBO>
我已经找到了如何找到LabelName ='container'的元素。但我不熟悉lambda表达式,并想知道如何访问LINQ结果中的信息。 Lambda表达式可能也不是一种方法。我对任何建议持开放态度。
var dimensions = from field in xml.Elements("LabelFieldBO")
where field.Element("LabelName").Value == "container"
select field;
感谢。
编辑:我想弄清楚的是如何从LabelName =“container”的XML中获取LabelHeight和LabelWidth
答案 0 :(得分:5)
以下代码创建一个新的匿名对象,其中包含标签名称,宽度和高度。
var result = doc.Elements("LabelFieldBo")
.Where(x => x.Element("LabelName").Value == "container")
.Select(x =>
new {
Name = x.Element("LabelName").Value,
Height = x.Element("LabelHeight").Value,
Width = x.Element("LabelWidth").Value
}
);
答案 1 :(得分:1)
from field in xml.Elements("LabelFieldBO")
where field.Element("LabelName").Value == "container"
select new
{
LabelHeight = field.Element("LabelHeight").Value,
LabelWidth = field.Element("LabelWidth").Value
}
这将返回具有两个属性(LabelWeight和LabelWidth)的IEnumerable匿名类型。 IEnumerable中的每个对象表示LabelName =“container”的LabelFieldB0。
因此,您可以通过以下方式“获取”您的数据:
var containerLabels =
from field in xml.Elements("LabelFieldBO")
where field.Element("LabelName").Value == "container"
select new
{
LabelHeight = field.Element("LabelHeight").Value,
LabelWidth = field.Element("LabelWidth").Value
}
foreach (var containerLabel in containerLabels)
{
Console.WriteLine(containerLabel.LabelHeight + " "
+ containerLabel.LabelWidth);
}