У меня был список кортежей, где каждый кортеж состоит из двух целых чисел, и я хотел отсортировать по 2-му целому числу. После взгляда в справке Python я получил это:
sorted(myList, key=lambda x: x[1])
который является большим. Мой вопрос, там одинаково сжатый способ сделать это в C# (язык, я должен работать в)? Я знаю очевидные классы создания вовлечения ответа и определение, что анонимный делегат к целому сравнивает шаг, но возможно также существует ориентированный путь linq. Заранее спасибо за любые предложения.
Предполагается, что список кортежей имеет тип IEnumerable
(последовательность кортежей, представленная с использованием класса Tuple <..>
из .NET 4.0 ), вы можете написать следующее, используя методы расширения LINQ:
var result = myList.OrderBy(k => k.Item2);
В коде k.Item2
возвращает второй компонент кортежа - в C # это свойство (потому что доступ к элементу по индексу не будет ' t быть типобезопасным в целом). В остальном, я считаю, что код довольно лаконичный (в том числе благодаря красивой нотации лямбда-функций).
Используя синтаксис запроса LINQ, вы можете написать это так (хотя первая версия, IMHO, более читабельна и определенно более лаконична):
var result = from k in myList orderby k.Item2 select k;
Другой способ сделать это в python это
from operator import itemgetter
sorted(myList, key=itemgetter(1))