我有一个字典,列表中有 5 个不同的双打。我知道列表中每个项目的顺序。我正在尝试找到一段代码,我可以在给定键的情况下在列表中查找特定值。
所以像:
double myDbl = myDict["key"][value[3]];
这样的事情可能吗,我在任何地方都找不到。谢谢
我有一个字典,列表中有 5 个不同的双打。我知道列表中每个项目的顺序。我正在尝试找到一段代码,我可以在给定键的情况下在列表中查找特定值。
所以像:
double myDbl = myDict["key"][value[3]];
这样的事情可能吗,我在任何地方都找不到。谢谢
正如其他人所说,如果这是一个Dictionary<string, List<double>>
你可以使用
double value = myDict["key"][3];
但是,这一行:
我知道列表中每个项目的顺序。
让我觉得实际上你应该重组你的代码。如果您知道第一项总是代表一个数据(例如体重),下一项总是代表另一个(例如身高)等,那么您应该使用这些属性创建一个新类型。使用 aList<double>
会使代码更难维护......它不会自然地揭示有关每个值的含义的信息。
将其更改为 a 后,Dictionary<string, Person>
您可以使用:
double height = myDict["key"].Height;
这明显更清楚。
当然,我引用的那句话可能是您的意思……
假设您有一个定义为的字典
Dictionary<string,List<double>>
并假设字典元素已正确初始化,您可以执行以下操作:
myDbl = myDict["key"][3];
它可能应该是这样的:
double myDbl = myDict["key"][3];
当您从结果列表中查找索引 3 时key
通过了解运算符的执行顺序,您可以看到myDict["key"]
它将返回您的值类型,这里假定为List<double>
. 从这个返回值中,您想要获取第 4 个对象(基于 0),以便[3]
在最后使用。
鉴于:
Dictionary<string, List<double>> l_dict = new Dictionary<string, List<double>>();
l_dict.Add( "key", new List<double>( new double[]{ 1, 2, 3, 4, 5 } );
然后:
List<double> l_valueCollection = l_dict["key"];
double l_value = l_valueCollection[3];
或者,更简洁(你想要的“单线”):
double l_value = l_dict["key"][3];
如果您的收藏看起来像这样:
Dictionary<string,List<double>> myDictionary;
然后以下将起作用:
double myDouble = myDictionary["key"][3];
创建一个这样的方法来返回您的值,无论您传入什么键。
private double GetValue(Dictionary<string, double> dict, string key)
{
return (from pair in dict where pair.Key == key select pair.Value).FirstOrDefault();
}
请记住,这是使用 LINQ,并且仅适用于 .Net Framework 3.5