如何不删除单个特定的会话变量?

时间:2014-03-01 11:02:30

标签: c# asp.net

我在删除会话变量时遇到问题。

假设我有30个会话变量...我想删除29个会话变量但只有一个。我怎么能这样做,请帮助我!

我尝试了Session.RemoveAll()这样就删除了所有的会话。但是我要求的是删除除了一个Session之外的所有会话。我该怎么做?

2 个答案:

答案 0 :(得分:4)

您可以使用Session.Remove从会话集合中删除key

您可以遍历会话集合

for (int i = 0; i < Session.Contents.Count; i++)
{
      var key = Session.Keys[i];
      var value = Session[i];

      //remove the key except one
      if(key!="youkey")
           Session.Remove(key);

}

编辑1

正如@JoachimIsaksson所建议的

 for (int i = 0; i < Session.Contents.Count; i++)
 {
      var key = Session.Keys[i];
      var value = Session[i];

      //remove the key except one
      if(key!="youkey")
      {
           Session.Remove(key);
           i++;
       }

 }

编辑2

根据@JoachimIsaksson的建议,我不确定是否正确

 for (int i = 0; i < Session.Contents.Count; i++)
 {
      var key = Session.Keys[i];
      var value = Session[i];

      //remove the key except one
      if(key!="youkey")
      {
           Session.Remove(key);
           i--;
       }

 }

答案 1 :(得分:1)

你可以简单地保存你想要保留的变量,清除所有变量并将其放回去;

var value = Session["tokeep"]; 
Session.RemoveAll(); 
Session["tokeep"] = value;