Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
返回c#dictionary who';s值(等级)符合标准_C#_Dictionary_Priority Queue - Fatal编程技术网

返回c#dictionary who';s值(等级)符合标准

返回c#dictionary who';s值(等级)符合标准,c#,dictionary,priority-queue,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 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 ?????
公共类人物
{
公共整数{get;set;}
公共字符串名称{get;set;}
公众人物(整数年龄,字符串名称)
{
年龄=年龄;
名称=名称;
}
}
公共字典人物=新字典();
public int id number=//字典中年龄最小的人的密钥?????

我已经查看了优先级队列,但这一切似乎都有些过头了。我觉得必须有一个简单的方法,告诉我年龄最低的地方的钥匙。

你可以找到最低年龄,然后找到那个年龄的人(或者第一个年龄相同的人,可能是倍数):

或者,更简单的是,只需使用
OrderBy
并获取第一个:

int id = people.OrderBy(kvp => kvp.Value.age).First().Key;
var key=people.Aggregate((a,b)=>a.Value.age
字典可以从键中找到值。它就是这样做的。使用不同的ADT处理有序值。当然,
dictionanry
可以被视为一个
IEnumerable
,标准LINQ(例如,
OrderBy
)也适用,但这并没有利用字典(或不同ADT)的性质,这可能会导致不理想的不对称边界,具体取决于它的使用方式。那么:people.OrderBy呢(val=>val.Value)。选择(t=>t.Key)。FirstOrDefault();我认为对于这种情况,Lookup类会更好。First sample很可能更快。聪明。避免了重复扫描,但也避免了手动键入foreach。
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;