gpt4 book ai didi

c# - 如何索引 C# Dictionary 的 Values 属性

转载 作者:行者123 更新时间:2023-11-30 19:30:09 25 4
gpt4 key购买 nike

使用 C# Dictionary 的 Values 属性,

var  myDict =  Dictionary < string, object> ;

如何获取

中的值
  myDict.Values 

我试过了

var theVales = myDict.Values ; 
object obj = theValues[0] ;

但这是语法错误。

添加:我正在尝试比较两个字典中的值 相同的键

最佳答案

你不能。这些值没有固定顺序。您可以将值写入新的 List<object>并在那里索引它们,但如果字典的内容经常更改,显然这不是很有帮助。

您还可以使用 linq:myDict.Values.ElementAt(0)但是:

  • 元素会随着字典的增长而改变位置
  • 它真的很低效,因为它只是调用 foreach在给定迭代次数的 Values 集合上。

你也可以使用 SortedList<TKey, TValue> .它根据键按顺序维护值,这可能是您想要的,也可能不是您想要的,它允许您通过键或索引访问值。然而,它在某些情况下具有非常不幸的性能特征,所以要小心!

这是一个 linq 解决方案,用于确定匹配键的值是否也匹配。这仅在您使用键类型的默认相等比较器时才有效。如果您使用的是自定义相等比较器,则可以使用方法调用语法来执行此操作。

IEnumerable<bool> matches = 
from pair1 in dict1
join pair2 in dict2
on pair1.Key equals pair2.Key
select pair1.Value.Equals(pair2.Value)

bool allValuesMatch = matches.All();

如果您需要一个字典中的所有项目在另一个字典中都有匹配的项目,您可以这样做:

bool allKeysMatch = new HashSet(dict1.Values).SetEquals(dict2.ValueS);
bool dictionariesMatch = allKeysMatch && allValuesMatch;

关于c# - 如何索引 C# Dictionary 的 Values 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9876954/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com