我有這個字典mappings
宣佈爲Dictionary<string, HashSet<string>>
。
我也有這個方法做的東西對一個HashSet在詞典:如何過濾使用LINQ的字典中的鍵列表
public void DoStuff(string key, int iClassId){
foreach (var classEntry in
from c in mappings[key]
where c.StartsWith(iClassId + "(")
select c)
{
DoStuffWithEntry(classEntry);
}
}
private void DoStuffWithEntry(string classEntry){
// Do stuff with classEntry here
}
在一種情況下,我需要做的這對一些在映射字典鍵,我想這是更好在密鑰列表上重寫和過濾,而不是爲每個密鑰調用DoStuff
以優化執行。
目前,我這樣做:
DoStuff("key1", 123);
DoStuff("key2", 123);
DoStuff("key4", 123);
DoStuff("key7", 123);
DoStuff("key11", 123);
邏輯上是這樣的,而不是調用DoStuff每個(FilterOnKeys不是一個方法 - 這正是我想...):
foreach (var classEntry in
from c in mappings.FilterOnKeys("key1", "key2", "key4", "key7", "key11")
where c.StartsWith(iClassId + "(")
select c)
{
DoStuffWithEntry(classEntry);
}
將這種方法比我原著的版本有更好的表現,或者是它只是一個「美容」簡化表達回事? – awe
化妝品簡化真的。從根本上講,.NET字典不允許你一次查找多個密鑰。如果你正在使用LINQ to SQL或類似的東西,那麼可能會有更好的選擇。 –