Это будет работать, но только если order
список имеет такой же размер, как ptdPoints
списка:
List<int> order = new List<int>() { 1, 9, 3 };
List<PointF> ptdPoints = new List<PointF>() { new PointF(20, 10), new PointF(10, 80), new PointF(60, 30) };
var result = order.Zip(ptdPoints, (left, right) => new {left, right})
.OrderBy(a => a.left)
.Select(a => a.right)
.ToList();
You basicaly объединяют два списка в анонимный объект, упорядочивая элемент первого списка и выводя только второй список. Обратите внимание, что это будет не изменить исходный список.
Edit: Для получения дополнительной информации о том, как это работает, вы можете прочитать these entries on LINQ и этот на Zip.
order.Zip(ptdPoints, (left, right) => new {left, right})
Эта линия будет принимать order
список, и «молнию» упорядоченным образом (это означает, что первый элемент первого списка с первым из второй и так далее). (left, right) => new {left, right}
- анонимная функция, берущая элемент из первого списка (left
) и элемент второго списка (right
) и выводящий анонимный объект с двумя членами: int left
и PointF right
.
.OrderBy(a => a.left)
OrderBy
определяет, какие из свойств объекта вы хотите, чтобы ваш заказ должен быть выполнен. После первой строки вход в функцию a => a.left
будет анонимным объектом, созданным ранее. Затем мы говорим: из этих элементов заказывайте их на основе свойства left
.Так как это анонимный объект, соединяющий ваши точки и ваши первоначальные целые числа, упорядочение по целому числу на анонимном объекте будет упорядочивать точки на основе ваших целых чисел.
.Select(a => a.right)
Select
проекты объекта в другой. В этой строке говорится: отныне я хочу манипулировать только объектами, находящимися в свойствах моего анонимного объекта right
, что существенно проецирует ваш анонимный объект в ваш исходный список PointF
.
Следующий шаг - создать новый список из этой последовательности.
Список 2 не имеет отношения к 1? – Sayse
Я хочу отсортировать первый список и соответствующий список также сортировать по тому же заказу –
это заказ только в порядке значений y? – Sayse