我在应用程序状态中添加了几个值,如:
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;
}
我想到了一种方法,比如将Id添加到其值中:
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;
}
但似乎不是正确的方法。我认为必须有办法获得钥匙,对吗?
答案 0 :(得分: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);
}
}
}