我有一个由两个整数组成的元组列表,我想按第二个整数进行排序。在查看Python帮助文档后,我得到了以下代码:
sorted(myList, key=lambda x: x[1])
这很棒。我的问题是,在我必须使用的C#语言中,是否有同样简洁的方法来实现这一点?我知道其中一个显而易见的答案涉及创建类并为整个比较步骤指定匿名委托,但也许还有一种以LINQ为导向的方法。提前感谢任何建议。
在 Python 中另一种实现的方法如下:
from operator import itemgetter
sorted(myList, key=itemgetter(1))
IEnumerable<Tuple<int, int>>
(使用 .NET 4.0 中的 Tuple<..>
类表示的元组序列),您可以使用 LINQ 扩展方法编写以下代码:var result = myList.OrderBy(k => k.Item2);
k.Item2
返回元组的第二个组件 - 在C#中,这是一种属性(因为通常按索引访问项目不是类型安全的)。否则,我认为代码相当简洁(也归功于漂亮的lambda函数符号)。var result = from k in myList orderby k.Item2 select k;
Tuple<T1, T2>
(它只是一个具有两个泛型类型属性T1 Item1 { get; set; }
和T2 Item2 { get; set; }
的简单类)。 - Tomas Petricek