2017-02-22 76 views
1

獲取應用國家重點名字我添加幾個值到應用程序的狀態,如:通過索引

for(int i=0;i<MyList.Count;i++) 
    Application[MyList[i].Id.ToString()] = MyList[i].Value; 

然後我想刪除值已到期(不在當前我的列表)的ID。所以我想遍歷所有的應用程序狀態值,並刪除它們如果Id已過期。是這樣的:

for(int i=0;i<Application.Count;i++) 
{ 
    int Id = int.Parse(Application[i].Key); // Here is what I want to do but I don't have access to key value 
    if(!MyList.Any(l => l.Id == Id) Application[Id.ToString()] = null; 
} 

我已經想到了一個辦法像加了標識,以它的價值,如:

for(int i=0;i<MyList.Count;i++) 
    Application[MyList[i].Id.ToString()] = MyList[i].Id.ToString() + "," + MyList[i].Value; 

然後:

for(int i=0;i<Application.Count;i++) 
{ 
    int Id = int.Parse(Application[i].Split(',')[0]); 
    if(!MyList.Any(l => l.Id == Id) Application[Id.ToString()] = null; 
} 

但似乎並不正確方法來做到這一點。我認爲必須有一種方法來獲得鑰匙,對吧?

回答

2

可以使用AllKeys集合:

foreach (string key in Application.AllKeys) 
{ 
    int id; 
    if (Int32.TryParse(key, out id)) 
    { 
     if (!MyList.Any(l => l.Id == id)) 
     { 
      Application.Remove(key); 
     } 
    } 
} 
+1

偉大的答案。非常感謝。爲什麼我沒有想到AllKeys。它的尷尬 –