尽管可以访问枚举器,但无法在CookieCollection上使用LINQ

时间:2019-09-23 11:57:41

标签: c# linq

大致跟随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");

1 个答案:

答案 0 :(得分:3)

CookieCollection仅实现IEnumerable,而不实现IEnumerable<Cookie>。您可以使用IEnumerable<Cookie>创建一个Cast

Cookie cookie = cookies.Cast<Cookie>().First(c => c.Name == "vanilla");