-1

我有一个字典,列表中有 5 个不同的双打。我知道列表中每个项目的顺序。我正在尝试找到一段代码,我可以在给定键的情况下在列表中查找特定值。

所以像:

double myDbl = myDict["key"][value[3]];

这样的事情可能吗,我在任何地方都找不到。谢谢

4

6 回答 6

5

正如其他人所说,如果这是一个Dictionary<string, List<double>>可以使用

double value = myDict["key"][3];

但是,这一行:

我知道列表中每个项目的顺序。

让我觉得实际上你应该重组你的代码。如果您知道第一项总是代表一个数据(例如体重),下一项总是代表另一个(例如身高)等,那么您应该使用这些属性创建一个新类型。使用 aList<double>会使代码更难维护......它不会自然地揭示有关每个值的含义的信息。

将其更改为 a 后,Dictionary<string, Person>您可以使用:

double height = myDict["key"].Height;

这明显更清楚。

当然,我引用的那句话可能是您的意思……

于 2012-11-14T15:42:03.723 回答
0

假设您有一个定义为的字典

Dictionary<string,List<double>>

并假设字典元素已正确初始化,您可以执行以下操作:

myDbl = myDict["key"][3];
于 2012-11-14T15:39:32.080 回答
0

它可能应该是这样的:

double myDbl = myDict["key"][3];

当您从结果列表中查找索引 3 时key

通过了解运算符的执行顺序,您可以看到myDict["key"]它将返回您的值类型,这里假定为List<double>. 从这个返回值中,您想要获取第 4 个对象(基于 0),以便[3]在最后使用。

于 2012-11-14T15:39:58.777 回答
0

鉴于:

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];
于 2012-11-14T15:41:56.280 回答
0

如果您的收藏看起来像这样:

Dictionary<string,List<double>> myDictionary;

然后以下将起作用:

double myDouble = myDictionary["key"][3];
于 2012-11-14T15:42:25.663 回答
0

创建一个这样的方法来返回您的值,无论您传入什么键。

    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

于 2012-11-14T15:46:36.493 回答