返回 c# 字典中的键值 (class) 满足条件
Returning the key in a c# dictionary who's value(class) meets a criteria
给定以下代码,return字典中年龄最小的键的最佳方法是什么。
public class Person
{
public int age {get; set;}
public string name {get; set;}
public Person(int Age, string Name)
{
age = Age;
name = Name;
}
}
public Dictionary<int, Person> people = new Dictionary<int, Person>();
public int idNumber = // Key of person with lowest age inside Dictionary ?????
我研究了优先级队列,但这一切似乎都太过分了。我觉得必须有一个简单的方法来告诉我年龄最低的钥匙。
先求最小的年龄,再求那个年龄的人(或者第一个是那个年龄的人,可以有倍数):
int lowestAge = people.Min(kvp => kvp.Value.age);
int id = people.First(kvp => kvp.Value.age == lowestAge).Key;
或者,更简单,只需使用 OrderBy
并获取第一个:
int id = people.OrderBy(kvp => kvp.Value.age).First().Key;
var key = people.Aggregate((a, b) => a.Value.age < b.Value.age ? a : b).Key;
给定以下代码,return字典中年龄最小的键的最佳方法是什么。
public class Person
{
public int age {get; set;}
public string name {get; set;}
public Person(int Age, string Name)
{
age = Age;
name = Name;
}
}
public Dictionary<int, Person> people = new Dictionary<int, Person>();
public int idNumber = // Key of person with lowest age inside Dictionary ?????
我研究了优先级队列,但这一切似乎都太过分了。我觉得必须有一个简单的方法来告诉我年龄最低的钥匙。
先求最小的年龄,再求那个年龄的人(或者第一个是那个年龄的人,可以有倍数):
int lowestAge = people.Min(kvp => kvp.Value.age);
int id = people.First(kvp => kvp.Value.age == lowestAge).Key;
或者,更简单,只需使用 OrderBy
并获取第一个:
int id = people.OrderBy(kvp => kvp.Value.age).First().Key;
var key = people.Aggregate((a, b) => a.Value.age < b.Value.age ? a : b).Key;