我在数据库中收到了大量结果,我保留在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.
}
答案 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
}
在上面的代码中kvp
是KeyValuePair<int, Result>
。您可以访问Key
和Value
属性,以获取Dictionary
的整数键和与Result
相关联的Key
值。我会把它作为一个运动/猜谜游戏让你弄清楚哪个属性是哪个! ; - )
正如@Wiktor所提到的,您还可以访问字典的Values
和Keys
集合来执行相同操作,但会检索一系列int
或Value
属性
使用其他集合的替代方案:
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
将是KeyValuePair
(MSDN 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
}