繁体   English   中英

如何在c#中对XElement列表进行排序

[英]How to sort XElement list in c#

我在c#中有一个XElement对象列表。 每个XElement对象都有属性index ,如下所示:

<A index="2" .... ></A>
<B index="4" .....></B>
...
.. 

现在我想根据索引值按升序对这些元素进行排序。 为此,我试过:

 listOfElement.OrderBy(e => e.Attribute("index").Value);

但元素未在列表中排序。 我在这里做错了什么?

首先,您没有将值转换为int。 在这种情况下它是无害的,但您可能想要这样做:

e => (int)e.Attribute("index")

其次, OrderBy不会对它所操作的类型产生副作用,但会返回一个新的IEnumerable<T> 您可以写下:覆盖以前的列表:

 listOfElement = listOfElement.OrderBy(e => (int)e.Attribute("index")).
                     ToList();

或者,您可以通过以下方式使用List<T>.Sort(Comparison<XElement>)方法:

listOfElement.Sort((e1, e2) => 
            (int)e1.Attribute("index") - (int)e2.Attribute("index"));
IEnumerable<XElement> sortShows = from s in listOfElement.Descendants()
                                  orderby (int)s.Attribute("index")
                                  select s;

请试试这个。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM