c# - 检查带有对象的字典是否包含具有相同属性的两个对象
问题描述
我的问题不重复,因为您标记的问题正在搜索List
,我正在尝试搜索Dictionary
。
我有一个Dictionary<string, Player>
.
Player
是一个具有属性GameID, Index
等等的对象。我的字典键是播放器的index
。我想检查字典是否包含两个Player
相同的 s GameID
(那些index
会有所不同)。这样做的一种方法是迭代foreach
字典值并使用一个变量,每次遇到某些GameID
. 但我想知道是否有办法通过使用来做到这一点linq
?如果有,该解决方案可能会更好。
解决方案
与列表不同,字典提供了访问其条目之一的恒定复杂性。
a 的目的Dictionary
是映射一个 Key -> Value 关系,其中键是唯一的。通过使用通用索引作为 Key,与List<Player>
.
因此,与其回答一个效率低下的问题,我将提供一个更有效的解决方案来重新制定原始问题。
您可以在此处找到 Multimap(具有多个键的字典)的实现,您可以在其中表示GameID-> Index
关系并计算出现次数,此处:
multimap in .NET
与(当前)接受的答案相比,它具有线性时间复杂度( O(N) )并且对于更大的字典或列表变得越来越糟,即使在 Linq 中的 IQueryable 中进行了优化,这也提供了恒定的复杂度。
推荐阅读
- swift - 如何从 MTKView 无缝切换到 UIView 显示
- angular - angular typescript observable 中的 HTTP 响应加载非常慢
- json - 使用 jq 将 JSON 从 AWS SSM 转换为环境变量
- networking - 公共IP范围可以用作私有IP吗?
- python - 运行 manage.py migrate 时出错
- java - NextActivity onCreate() 被跳过
- vba - VBA 查看 A 列中的单元格名称,根据该名称打开文件,并仅复制 C 列中的标题:
- python - 在 Python 中管理(即正确终止)MongoDB 守护程序的最可接受的方法是什么?
- windows - PS脚本复制新文件
- javascript - 根据网页上的用户输入对列表进行排序