按索引获取应用程序状态键名称

时间:2017-02-22 20:16:52

标签: c# asp.net

我在应用程序状态中添加了几个值,如:

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;
}

但似乎不是正确的方法。我认为必须有办法获得钥匙,对吗?

1 个答案:

答案 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);
        }
    }
}