You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何按元素名称(下划线后数字)对XElements集合进行排序?

解决方案

当然可以用单条LINQ语句直接完成排序,核心是通过元素的本地名称提取出下划线后的数字作为排序依据:

假设你的XElements集合变量名为elements,可以这样写:

var sortedElements = elements.OrderBy(e => int.Parse(e.Name.LocalName.TrimStart('_')));

代码说明:

  • e.Name.LocalName:获取元素的本地名称(比如_22、_14)
  • TrimStart('_'):去掉名称开头的下划线,得到纯数字字符串(比如22、14)
  • int.Parse(...):将字符串转换为整数,确保按数字大小排序(而非字符串字典序)
  • OrderBy:按提取出的整数值对集合进行升序排序,若需要降序可替换为OrderByDescending

如果担心存在非数字后缀的元素(你的示例中未出现这类情况),可以添加安全转换逻辑避免抛出异常:

var sortedElements = elements.OrderBy(e => 
    int.TryParse(e.Name.LocalName.TrimStart('_'), out int num) ? num : int.MaxValue);

这样会把解析失败的元素放到排序结果的末尾。

内容的提问来源于stack exchange,提问作者user30880528

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 18:42:13