2012-03-01 82 views
3

我想對C#詞典中的每個對象做些什麼。 keyVal.Value似乎有點尷尬:循環在c#詞典中的項目

foreach (KeyValuePair<int, Customer> keyVal in customers) { 
    DoSomething(keyVal.Value); 
} 

有沒有更好的方式來做到這一點,也快?

+2

你* *只是希望值是多少?如果是這樣,請使用'customers.Values'。 – Gabe 2012-03-01 20:28:35

回答

5

Dictionary類有一個Values屬性,您可以直接遍歷:

foreach(var cust in customer.Values) 
{ 
    DoSomething(cust); 
} 

的選擇,如果你可以使用LINQ作爲阿里麪包車Someren顯示his answer

customers.Values.Select(cust => DoSomething(cust)); 

或者:

customers.Select(cust => DoSomething(cust.Value)); 
+0

你需要'.Value'在你的linq中。在這種情況下'cust'的類型是'KeyValuePair ' – 2012-03-01 20:39:10

+0

@KyleTrauberman - 感謝您的更正。我還增加了另一種選擇。 – Oded 2012-03-01 20:41:34

4
foreach (Customer c in customers.Values) 
1

如果您關心的只是值而不是鍵,那麼您可以使用IDictionary.Values進行迭代。

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

您可以隨時迭代鍵並獲取值。或者,您可以迭代這些值。

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

foreach(var customer in customer.Values) 
{ 
    DoSomething(customer); 
} 
3
customers.Select(customer => DoSomething(customer.Value)); 
+0

這裏假設'DoSomething'返回一個值。 – 2012-03-01 20:31:54