大致跟随this answer,我想获取第一个具有URI的特定名称的cookie。
Uri uri = new Uri(url);
CookieContainer cookieJar = new CookieContainer();
...
CookieCollection cookies = cookieJar.GetCookies(uri);
然后,我可以像这样访问第一个(也是目前唯一的)cookie。
Cookie cookie = cookies[0];
我看到它是一个集合,并且有一个枚举器。但是,当我尝试使用LINQ时,似乎该集合没有得到任何类似的东西。
Cookie cookie = cookies
.First(c => c.Name == "vanilla");
LINQ是从顶部导入的,它肯定可以与我插入的一些测试行一起使用。根据智能感知,没有AsList()
或ToArray()
都没有。该收藏似乎不太像收藏。
我想念什么?
修改
我最终复制了这样的内容。但这似乎笨拙...
Cookie[] cookies = new Cookie[cookieJar.Count];
cookieJar.GetCookies(uri).CopyTo(cookies, 0);
Cookie cookie = cookies
.First(c => c.Name == "pm_retention_urls");
答案 0 :(得分:3)
CookieCollection
仅实现IEnumerable
,而不实现IEnumerable<Cookie>
。您可以使用IEnumerable<Cookie>
创建一个Cast
:
Cookie cookie = cookies.Cast<Cookie>().First(c => c.Name == "vanilla");