如何迭代这种特殊类型的Dictionary <int,result =“”>?</int,>

时间:2012-05-22 18:58:44

标签: c# .net

我在数据库中收到了大量结果,我保留在Dictionary<int, Result>()

我的Result类是:

public int Id { get; set; }
public string something { get; set; }
public string somethingtwo { get; set; }
public string somethingthree { get; set; }
public DateTime Posted { get; set; }
public string Location { get; set; }
public bool somethingfour { get; set; }

所以,Dictionary<int, Result>里面有很多结果,我想迭代它们。我是怎么做到的?我尝试了几种方法,但即使我知道它们也不起作用。

我想做这样的事情:

foreach(var result in resultDict)
{
   mynewstring = result.Location;
   mynewstringtwo = result.Posted;
   // etc etc.
}

8 个答案:

答案 0 :(得分:7)

foreach(var kvp in resultsDict) {
    //Do somethign with kvp
    UseResult(kvp.Value); //kvp.Value is a Result object
    UseKey(kvp.Key); //kvp.Key is the integer key you access it with
}

在上面的代码中kvpKeyValuePair<int, Result>。您可以访问KeyValue属性,以获取Dictionary的整数键和与Result相关联的Key值。我会把它作为一个运动/猜谜游戏让你弄清楚哪个属性是哪个! ; - )

正如@Wiktor所提到的,您还可以访问字典的ValuesKeys集合来执行相同操作,但会检索一系列intValue属性

使用其他集合的替代方案:

foreach(var val in resultsDict.Values) {
    // The key is not accessible immediately,
    // you have to examine the value to figure out the key
    UseResult(val); //val is a value.
}

foreach(var key in resultsDict.Keys) {
    //The value isn't directly accessible, but you can look it up.
    UseResult(resultsDict[key]);
    UseKey(key);
}

答案 1 :(得分:3)

Dcitionary有一个名为Values的ValueCollection,因此代码为:

foreach (Result r in dict.Values)
{
    mynewstring = result.Location;
    mynewstringtwo = result.Posted;
}

答案 2 :(得分:1)

var dictionary = ...;
foreach ( var result in dictionary.Values )
{
   ...
}

这就是你需要的吗?

答案 3 :(得分:0)

您可以使用Values属性来迭代Dictionary的值(另请参阅MSDN page)。

代码示例:

// Your dictionary
var myResultDictionary = new Dictionary<int, Result>();

foreach (var item in myResultDictionary.Values)
{
    // "item" holds a Result object
    // Do something with item
}

您还可以定期循环Dictionary,但item将是KeyValuePairMSDN page)对象。您可以使用变量项上的Value属性访问该值。

代码示例:

// Your dictionary
var myResultDictionary = new Dictionary<int, Result>();

foreach (var item in myResultDictionary)
{
    // "item" holds a KeyValuePair<int, Result> object
    // You can access the value (a Result object) by calling "item.Value"
    // Do something with item
}

答案 4 :(得分:0)

您可以迭代Dictionary.Values,这与任何其他IEnumerable<Result>

一样

或者,您可以迭代字典,这是一个IEnumerable<KeyValuePair<int, Result>>

答案 5 :(得分:0)

foreach (KeyValuePair<int,Result> item in dictionary)
            {
                //do stuff
            }

答案 6 :(得分:0)

foreach(KeyValuePair<int,result> keyValue in yourDictionary)
{
    Debug.WriteLine(keyValue.Value);
    //or
    Debug.WriteLine(keyValue.Key);
}

或同样的事情,但使用var:

foreach(var keyValue in yourDictionary)
{
    Debug.WriteLine(keyValue.Value);
    //or
    Debug.WriteLine(keyValue.Key);
}

^^同样的事情,但var动态地计算出自己的类型

或者你可以这样做,如果你只需要结果:

foreach(var result in yourDictionary.Values)
{
    Debug.WriteLine(result);
}

答案 7 :(得分:0)

在词典中使用foreach

foreach (var keyValue in dictionary) { //Use key value here }