C# 如何从字典中获取单个值<;关键、价值>;给定属于类型值的属性
假设我有这本字典:C# 如何从字典中获取单个值<;关键、价值>;给定属于类型值的属性,c#,.net,linq,dictionary,lambda,C#,.net,Linq,Dictionary,Lambda,假设我有这本字典: Dictionary<Guid, Person> people = new Dictionary<Guid, Person>(); 我知道每个人都有不同的Ssn,所以我只返回列表中第一个值(因为列表只有一个值)。否则返回null 我不喜欢这个解决方案的一点是,我必须从linq查询中获取一个列表,而不是一个值。是否存在可以从字典中获取单个值的linq查询 使用FirstOrDefault return people.Values.FirstOrDefa
Dictionary<Guid, Person> people = new Dictionary<Guid, Person>();
我知道每个人都有不同的Ssn
,所以我只返回列表中第一个值(因为列表只有一个值)。否则返回null
我不喜欢这个解决方案的一点是,我必须从linq查询中获取一个列表,而不是一个值。是否存在可以从字典中获取单个值的linq查询 使用
FirstOrDefault
return people.Values.FirstOrDefault(p => p.SSN == socialSecurityNum);
使用
FirstOrDefault
return people.Values.FirstOrDefault(p => p.SSN == socialSecurityNum);
嗯,谢谢。我不知道为什么我没有想到这一点。@Drew,没问题:)@Drew如果你想在有多人患有此病的例外情况下获得例外,那么我们最好考虑SingleOrDefaultsocialSecurityNum@HaraldCoppoolse,根据问题,
FirstOrDefault
正是OP想要的,谢谢。我不知道为什么我没有想到这一点。@Drew,没问题:)@Drew如果你想在有多人患有此病的例外情况下获得例外,那么我们最好考虑SingleOrDefaultsocialSecurityNum@HaraldCoppoolse,根据问题,FirstOrDefault
正是OP通常想要的,你试图设计你的代码,这样你就不会有像那样低效的代码…@Phil1970你介意详细说明吗?我想尽可能地改进我的代码,但我不太清楚你的意思。好吧,如果你有1000000人,你必须检查所有人是否有社会保险号码。通常,您会将数据存储在数据库中,并为该列创建索引,然后编写一个查询来单独获取这些人。本质上,如果可能的话,您试图避免使用O(n)搜索算法。顺便问一下Guid与SSN的关系。也许,字典应该使用SSN作为键。@Philla,我明白了,谢谢。这实际上只是一个例子,因为我不想让这个问题过于做作,因为我实际上正在处理的是什么。这本字典最多会有十几个或两个条目,所以我认为这种方法会很好。但是谢谢你的建议,当它更大的时候,我想我应该在问题中说明。通常,你会尝试设计你的代码,这样你就不会有像那样低效的代码…@Phil1970,你介意详细说明吗?我想尽可能地改进我的代码,但我不太清楚你的意思。好吧,如果你有1000000人,你必须检查所有人是否有社会保险号码。通常,您会将数据存储在数据库中,并为该列创建索引,然后编写一个查询来单独获取这些人。本质上,如果可能的话,您试图避免使用O(n)搜索算法。顺便问一下Guid与SSN的关系。也许,字典应该使用SSN作为键。@Philla,我明白了,谢谢。这实际上只是一个例子,因为我不想让这个问题过于做作,因为我实际上正在处理的是什么。这本字典最多会有十几个或两个条目,所以我认为这种方法会很好。但是谢谢你的建议,当它更大的时候,我想我应该在问题中说明这一点。