Попытка найти 3 верхних свойства экземпляра POCO, часть 2 - PullRequest
0 голосов
/ 24 августа 2009

месяц назад я задал этот вопрос: Попытка найти три верхних свойства экземпляра POCO . Получил ответ, хорошо сработало.

Теперь я пытаюсь найти 3 верхних свойства объекта POCO (как и мой предыдущий вопрос), но где каждое свойство имеет WEIGHT . Стоимость имущества на первом месте. Затем вес занимает второе место ... если два или более свойства имеют одинаковое значение.

Давайте расширим данные из моего предыдущего вопроса в качестве отправной точки для примера: -

Чем меньше вес, тем лучше. 1 == лучший. 10 худшее. Каждое весовое число УНИКАЛЬНО между прочим. Весовой номер может быть любым ... мне просто нужно как-то вес эм ....

eg.
Math (weight: 1) - 83%
Engrish (weight: 6) - 82%
Chemistry (weight: 2) - 81%
Drama (Weight: 3) - 100%
Geography (weight: 4) - 82%
Sport (Weight: 5)- 81%
etc..

Лучшие 3 результата по порядку:

  • Drama
  • Math
  • География (не англ. География W = 4, англ. W = 6)

Мне интересно, можно ли этого достичь с помощью Linq (как мой предыдущий вопрос / ответ). Я доволен словарем и т. Д. Я также предполагаю, что мне может понадобиться перегрузить метод Comparer?

Ура за любую помощь:)

Ответы [ 2 ]

1 голос
/ 24 августа 2009

Эммы. Исходя из твоего предыдущего ответа и составленного от меня мнения. (т.е. не проверено)

var result = (from p in pairs
              orderby p.Value descending, p.Weight
              select p);

var result = pairs.OrderByDescending(p => p.Value)
                  .ThenBy(p => p.Weight);
0 голосов
/ 24 августа 2009

Используйте тот же ответ, что и раньше, но при заказе умножьте значение на вес.

...