大致如下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");
最佳答案
CookieCollection
只实现 IEnumerable
而不是 IEnumerable<Cookie>
.您可以创建一个 IEnumerable<Cookie>
使用 Cast
:
Cookie cookie = cookies.Cast<Cookie>().First(c => c.Name == "vanilla");
关于c# - 尽管可以访问枚举器,但无法在 CookieCollection 上使用 LINQ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58061953/