如何在Python和C#中按元组第二个元素排序列表
我有一个包含多个元组的列表,每个元组里有两个整数,我想按照第二个整数来排序。查了查Python的帮助文档,我找到了这个方法:
sorted(myList, key=lambda x: x[1])
这个方法很好。我的问题是,在C#(我必须使用的语言)中,有没有同样简洁的方法来做到这一点?我知道有个明显的办法,就是创建类并为整个比较步骤指定一个匿名委托,但也许还有基于LINQ的方式。提前感谢任何建议。
2 个回答
14
在Python中,还有另一种方法可以做到这一点。
from operator import itemgetter
sorted(myList, key=itemgetter(1))
6
假设这个元组的列表类型是 IEnumerable<Tuple<int, int>>
(这是.NET 4.0中用 Tuple<..>
类表示的一系列元组),你可以使用LINQ扩展方法写出如下代码:
var result = myList.OrderBy(k => k.Item2);
在这段代码中,k.Item2
返回的是元组的第二个部分 - 在C#中,这是一种属性(因为通过索引访问元素在一般情况下不够安全)。除此之外,我觉得这段代码写得很简洁(这也得益于好用的lambda函数写法)。
如果使用LINQ的查询语法,你可以这样写(虽然我个人认为第一种写法更易读,而且确实更简洁):
var result = from k in myList orderby k.Item2 select k;