以下 Python 的最小/最大代码的 C# 等价物是什么:
pairs = [ (2,"dog"), (1, "cat"), (3, "dragon"), (1, "tiger") ]
# Returns the PAIR (not the number) that minimizes on pair[0]
min_pair = min(pairs, key=lambda pair:pair[0])
# this will return (1, 'cat'), NOT 1
似乎 C# 的 Enumerable.Min 非常接近。但根据其 MSDN doc,它总是返回最小化 VALUE (不是原始对象)。我错过了什么吗?
编辑
请注意- 我不倾向于通过首先排序来实现这一点,因为排序 (O(nlogn)) 在计算上比找到最小值 (O(n)) 更重。
另请注意- 字典也不是理想的方法。它无法处理存在重复键的情况 - (1, "cat") 和 (1, "tiger")。
更重要的是,字典无法处理要处理的项目是复杂类的情况。例如,在动物对象列表中找到最小值,使用年龄作为键:
class Animal
{
public string name;
public int age;
}