【发布时间】:2021-10-25 17:48:05
【问题描述】:
尽管堆栈溢出中有类似的问题,但我的解决方案无法解决这个问题。我有一个给定的号码,
例如:int target = 15
然后是键值对列表,
var farm = new List<KeyValuePair<string,int>>()
{
new KeyValuePair<string,int>("apple", 25),
new KeyValuePair<string,int>("veges", 35),
new KeyValuePair<string,int>("watermelon", 0),
new KeyValuePair<string,int>("grapes", 10),
}
现在我想根据给定数字 15 和对列表中的第二个元素的差异对列表进行排序。
到目前为止,这是我的解决方案,但没有做任何更改:
farm.Sort((prod1, prod2) => Math.Abs(prod1.Value - target) < Math.Abs(prod2 - target)
? prod1.Value : prod2.Value)
预期的排序应该是:
("grapes", 10) // |10-15| = 5
("apple", 25) // |25-15| = 10
("watermelon", 0) // |0-15| = 15
("veges", 35) // |35-15| = 20
非常感谢任何见解。
【问题讨论】:
-
显示预期的输出。另请注意“它不起作用”不是对问题的技术描述,我们无法读懂您的想法
-
@TheGeneral 对不起。
标签: c# list algorithm sorting key-value