我想对C#Dictionary中的每个对象做一些事情。 keyVal.Value
似乎有点尴尬:
foreach (KeyValuePair<int, Customer> keyVal in customers) {
DoSomething(keyVal.Value);
}
有没有更好的方法来做到这一点也很快?
答案 0 :(得分:6)
Dictionary
类有一个Values
属性,您可以直接迭代:
foreach(var cust in customer.Values)
{
DoSomething(cust);
}
另一种选择,如果您可以使用LINQ作为Arie van Someren在his answer中显示:
customers.Values.Select(cust => DoSomething(cust));
或者:
customers.Select(cust => DoSomething(cust.Value));
答案 1 :(得分:5)
foreach (Customer c in customers.Values)
答案 2 :(得分:4)
您可以随时遍历键并获取值。或者,您可以迭代这些值。
foreach(var key in customers.Keys)
{
DoSomething(customers[key]);
}
或
foreach(var customer in customer.Values)
{
DoSomething(customer);
}
答案 3 :(得分:3)
customers.Select( customer => DoSomething(customer.Value) );
答案 4 :(得分:1)
如果您关心的只是值而不是键,那么您可以使用IDictionary.Values
进行迭代。
foreach (Customer val in customers.Values) {
DoSomething(val);
}