返回ac#字典中的键,其值(类)符合条件

Geo*_*ohn 0 c# dictionary priority-queue

给定以下代码,从字典中返回具有最低年龄的密钥的最佳方法是什么.

 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 ?????
Run Code Online (Sandbox Code Playgroud)

我已经调查了优先级队列,但这一切似乎都有些过分.我觉得必须有一个简单的方法来告诉我年龄最小的关键.

Jon*_*lis 5

您可以找到最低年龄,然后找到具有该年龄的人(或具有该年龄的第一个人,可能有倍数):

int lowestAge = people.Min(kvp => kvp.Value.age);
int id = people.First(kvp => kvp.Value.age == lowestAge).Key;
Run Code Online (Sandbox Code Playgroud)

或者,甚至更简单,只需使用OrderBy并抓住第一个:

int id = people.OrderBy(kvp => kvp.Value.age).First().Key;
Run Code Online (Sandbox Code Playgroud)


Ale*_*exD 5

var key = people.Aggregate((a, b) => a.Value.age < b.Value.age ? a : b).Key;
Run Code Online (Sandbox Code Playgroud)

  • 聪明.避免双重扫描,但也避免手动键入foreach. (2认同)