要素を並べ替える方法 (LINQ to XML)
XML にクエリを実行するとき、結果を並べ替えることができます。 この記事では、2 つの例を取り上げます。最初の例では、名前空間に "属さない" XML に対して結果を並べ替えます。2 番目も並べ替えは同じですが、ある名前空間に "属する" XML が対象になります。
例: その結果を並べ替えるクエリを記述する
この例では、結果を並べ替えるクエリの作成方法を示します。 XML ドキュメント「サンプル XML ファイル: 数値データ」が使用されます。
XElement root = XElement.Load("Data.xml");
IEnumerable<decimal> prices =
from el in root.Elements("Data")
let price = (decimal)el.Element("Price")
orderby price
select price;
foreach (decimal el in prices)
Console.WriteLine(el);
Dim root As XElement = XElement.Load("Data.xml")
Dim prices As IEnumerable(Of Decimal) = _
From el In root.<Data> _
Let price = Convert.ToDecimal(el.<Price>.Value) _
Order By (price) _
Select price
For Each el As Decimal In prices
Console.WriteLine(el)
Next
この例を実行すると、次の出力が生成されます。
0.99
4.95
6.99
24.50
29.00
66.00
89.99
例: ある名前空間を対象とするクエリで、その結果を並べ替えるクエリを記述する
次の例では同じクエリを確認できますが、ある名前空間にある XML が対象になっています。 XML ドキュメント「サンプル XML ファイル: 名前空間内の数値データ」が使用されます。
詳細については、「名前空間の概要」を参照してください。
XElement root = XElement.Load("DataInNamespace.xml");
XNamespace aw = "http://www.adatum.com";
IEnumerable<decimal> prices =
from el in root.Elements(aw + "Data")
let price = (decimal)el.Element(aw + "Price")
orderby price
select price;
foreach (decimal el in prices)
Console.WriteLine(el);
Imports <xmlns='http://www.adatum.com'>
Module Module1
Sub Main()
Dim root As XElement = XElement.Load("DataInNamespace.xml")
Dim prices As IEnumerable(Of Decimal) = _
From el In root.<Data> _
Let price = Convert.ToDecimal(el.<Price>.Value) _
Order By (price) _
Select price
For Each el As Decimal In prices
Console.WriteLine(el)
Next
End Sub
End Module
この例を実行すると、次の出力が生成されます。
0.99
4.95
6.99
24.50
29.00
66.00
89.99
関連項目
GitHub で Microsoft と共同作業する
このコンテンツのソースは GitHub にあります。そこで、issue や pull request を作成および確認することもできます。 詳細については、共同作成者ガイドを参照してください。
.NET