在c#字典中循环项目

在c#字典中循环项目,c#,C#,我想对C#Dictionary中的每个对象做点什么keyVal.Value似乎有点尴尬: foreach (KeyValuePair<int, Customer> keyVal in customers) { DoSomething(keyVal.Value); } foreach(客户中的KeyValuePair-keyVal){ 剂量测定法(关键值); } 是否有一种更好的方法可以快速完成此任务?该类有一个可以直接迭代的属性: foreach (Customer c

我想对C#Dictionary中的每个对象做点什么
keyVal.Value
似乎有点尴尬:

foreach (KeyValuePair<int, Customer> keyVal in customers) {
    DoSomething(keyVal.Value);
}
foreach(客户中的KeyValuePair-keyVal){
剂量测定法(关键值);
}
是否有一种更好的方法可以快速完成此任务?

该类有一个可以直接迭代的属性:

foreach (Customer c in customers.Values)
foreach(var cust in customer.Values)
{
  DoSomething(cust);
}
另一种选择是,如果您可以像Arie van Someren在中显示的那样使用LINQ:

或:


如果您只关心值,而不关心键,那么可以使用
IDictionary.values
进行迭代

foreach (Customer val in customers.Values) {
    DoSomething(val);
}

您始终可以迭代键并获取值。或者,您可以只迭代这些值

foreach(var key in customers.Keys)
{
    DoSomething(customers[key]);
}


你只是想要这些值吗?如果是这样,请使用
customers.Values
。这假设
DoSomething
返回一个值。您需要在linq中使用
.value
cust
在此类型中属于
KeyValuePair
context@KyleTrauberman-谢谢你的更正。我还添加了另一种选择。
foreach (Customer val in customers.Values) {
    DoSomething(val);
}
foreach(var key in customers.Keys)
{
    DoSomething(customers[key]);
}
foreach(var customer in customer.Values)
{
    DoSomething(customer);
}
customers.Select( customer => DoSomething(customer.Value) );