我根据引荐链接设置了Cookie,它们都以相同的字母开头,让我们说“谷歌”,但它们以_xxx,_yyy,_zzz或其他任何参考结尾。
现在,当我尝试稍后获取cookie时,我遇到的问题是我不想检查所有不同的cookie,我想检查所有以“google”开头的cookie并基于我将开始一个继续处理的脚本。
if (Request.Cookies("google"))
{
run other stuff
}
我知道如何添加StartWith或其他东西吗?我是一个新手,所以不是真的进入C#。
提前致谢,
专利
答案 0 :(得分:3)
嗯.. HttpRequest.Cookies 是一个集合。所以使用LINQ:
var qry = from cookieName in Request.Cookies.Keys
where cookieName.StartsWith("google")
select cookieName;
foreach(var item in qry)
{
// get the cookie and deal with it.
var cookie = Request.Cookies[item];
}
结论:你无法摆脱整个cookie集合的迭代。但是你可以使用LINQ轻松完成。
答案 1 :(得分:2)
如果你想找到具有特定后缀的cookie,你必须检查所有的cookie(Randolpho的答案是有效的。)
这样做并不是一个特别好的主意。问题是您创建的cookie越多,您在服务器和连接上的开销就越大。假设您有10个Cookie:google_aaa
,google_bbb
等。每个请求都会将所有10个Cookie发送到您的服务器(包括图片请求,css等。
最好使用单个cookie,这是存储在服务器上的所有信息的某种关键。像这样:
var cookie = Cookies["google"];
if(cookie!=null)
{
// cookie.Value is a unique key for this user. Lookup this
// key in your database or other store to find out the
// information about this user.
}
答案 2 :(得分:0)
如果您愿意,可以这样使用lambda表达式
var cookie = Request.Cookies.AllKeys.FirstOrDefault(s => s.Contains("yourName"));
希望这有帮助!