-1

一个月前我问了这个问题:Trying to find the top 3 properties of a POCO instance。得到了答案,效果很好。

现在,我正在尝试查找 POCO 对象的前 3 个属性(就像我之前的问题一样),但每个属性都有一个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 位的结果依次为:

  • 戏剧
  • 数学
  • 地理(不是英语。地理 W = 4,英语 W = 6)

我想知道这是否可以通过 Linq 来实现(就像我之前的问题/答案一样)。我对字典等感到满意。我还猜想我可能需要重载 Comparer 方法?

为任何帮助干杯:)

4

2 回答 2

1

嗯。根据您之前的回答,并由我决定。(即未经测试)

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);
于 2009-08-24T05:01:17.790 回答
0

使用与以前相同的答案,但在订购时将值乘以权重。

于 2009-08-24T04:33:13.120 回答