繁体   English   中英

如何从 Asp.Net 中的会话中删除值

[英]How Remove values from Session in Asp.Net

我有Session["ID"]="1,2,3,4,5"

如何从会话中删除单个值(2 或任何)?

如果你想删除第一个值,你可以使用;

var s = "1,2,3,4,5";
var result = string.Join(",", s.Split(',').Skip(1).ToList());
Console.WriteLine(result); // 2,3,4,5

如果你想删除最后一个值,

var s = "1,2,3,4,5";
var lastValue = s.Split(',')[s.Split(',').Length - 1];
var result = string.Join(",", s.Split(',').TakeWhile(c => !string.Equals(c, lastValue)).ToList());
Console.WriteLine(result); // 1,2,3,4

它丑陋,但您可以尝试以下操作:

var numberToRemove = 3
var result = Session["ID"]
    .Replace(numberToRemove.ToString(), string.Empty)
    .Replace(",,",",")
    .Trim(',');
Session["ID"] = result;

或者

var result2 = Session["ID"]
    .Split(',')
    .Where(s => s != numberToRemove.ToString())
    .Aggregate((s1, s2) => s1 += "," + s2);

您可以使用分隔符拆分字符串删除项目,然后使用分隔符连接剩余的字符串

        var sessionIds = Session["ID"].Split(',').ToList();
        sessionIds.Remove("1");
        sessionIds.Remove("5");
        Session["ID"] = string.Join(",", sessionIds);

您可以使用正则表达式:

Session["ID"] = Regex.Replace(Session["ID"], "[15],|,[15]$", string.Empty);

也许每个冒号后面都有空格:

Session["ID"] = Regex.Replace(Session["ID"], "\s*[15],|,\s*[15]$", string.Empty);
string GetID = txtID.text;
var sessionIds = Session["ID"].ToString().Split(',').ToList();
sessionIds.Remove(GetID);
Session["ID"] = string.Join(",", sessionIds);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM