簡體   English   中英

C#Linq over XML => Lambda Expression

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM