Два списка сортируют один по возрастанию, другой по убыванию, но с ограниченными - PullRequest
1 голос
/ 13 мая 2011

Есть очень простой вопрос: мне нужно реализовать это в C #.У меня есть два списка Say List1 и List2

List1 23,34,45,12,34,34,67,100,34

List2 0.1,0.3,0.1,0.2,0.15,0.17,0.91,0.81,0.3

Как вы можете видеть, есть дублирование точек данных в list1 (в данном случае 34). Я должен отсортировать List1 в порядке убывания, ограниченном в List2, так что если в List1 есть дублирующаяся запись (34) затем возьмите самое высокое соответствующее значение из List2 (здесь 34 имеет 0,3,0,3,0,17 и 0,15). Таким образом, выходные данные должны быть сначала 34, соответствующими 0,3, затем 0,3, затем 0,17, а затем 0,15

List1100,67,45,34,34,34,34,23,12

List2 0.81,0.91,0.1,0.3,0.3,0.17,0.15,0.1,0.2

1 Ответ

8 голосов
/ 13 мая 2011

Это выглядит так:

var result = list1.Zip(list2, (x, y) => new { x, y })
                  .OrderByDescending(z => z.x)
                  .ThenByDescending(z => z.y);

Результатом будет последовательность анонимного типа, где x соответствует значению в list1, y соответствует значению в list2и все это отсортировано в порядке убывания на x затем y.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...