在将XML转换为数组之前,可以按属性对其进行排序

本文关键字:属性 排序 转换 XML 数组 在将 | 更新日期: 2023-09-27 18:25:22

这是我当前的代码,它从xml中获取元素并将其放入数组中。但它只是按照读取的顺序(从上到下)

using System.Xml;
using System.Xml.Linq;
// XML Path
var doc = XDocument.Load("C:/Scripts/example.xml");
// Node
string[] picks = doc.Descendants("pick").Select(element => element.Value).ToArray();

我想知道在将数组转换为数组时,是否可以按属性(在本例中为"order")对数组进行排序。所需输出为{Gragas、Draven、Ryze、Shen、Shyvanna、…}

这是我的xml:

<championSelect>
<blue>
  <pick order="1">Gragas</pick>
  <pick order="4">Shen</pick>
  <pick order="5">Shyvanna</pick>
  <pick order="8">Garen</pick>
  <pick order="9">Karthus</pick>
</blue>
<red>
  <pick order="2">Draven</pick>
  <pick order="3">Ryze</pick>
  <pick order="6">Ahri</pick>
  <pick order="7">Annie</pick>
  <pick order="10">Brand</pick>
</red>

我玩OrderBy()和OrderByDescending()时运气不好

在将XML转换为数组之前,可以按属性对其进行排序

使用OrderBy扩展方法

string[] picks = doc
  .Descendants("pick")
  .OrderBy(element => Int32.Parse(element.GetAttribute("order").Value))
  .Select(element => element.Value)
  .ToArray();