[英]C# Linq over XML => Lambda Expression
我有一個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
以下代碼創建一個新的匿名對象,其中包含標簽名稱,寬度和高度。
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
}
);
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);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.