如何从字典中获取单个值给定一个属于Value类型的属性

本文关键字:一个 属于 Value 属性 类型 字典 获取 单个值 | 更新日期: 2023-09-27 18:06:59

假设我有这样一个字典:

Dictionary<Guid, Person> people = new Dictionary<Guid, Person>();

假设它填充了一些数据。我们也说PersonSsn的性质。我想用Ssn = socialSecurityNum返回Person in people,其中socialSecurityNum是某个值。这是我能想到的最好的办法:

public Person GetPerson(int socialSecurityNum) 
{
    IEnumerable<Person> persons = people.Values.Where(p => p.SSN == socialSecurityNum);
    foreach (Person person in persons)
    {
        return person;
    }
    return null;
}

我知道每个人都有不同的Ssn,所以我只是返回列表中第一个值(因为列表只有一个值)。否则返回null。

我不喜欢这个解决方案的事情是,我必须从linq查询中获得一个列表,而不是单个值。是否有一个linq查询可以从字典中获得单个值?

如何从字典中获取单个值给定一个属于Value类型的属性

FirstOrDefault代替Where

return people.Values.FirstOrDefault(p => p.SSN == socialSecurityNum);