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

标签 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");

最佳答案

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/

相关文章:

c# - .net 中有光纤 api 吗?

c# - Azure AD 使用用户名/密码从 API 进行身份验证 - 无 UI,有示例吗?

c# - 使用 LINQ 读取 XML 时防止重复元素访问

c# - 为什么我不能用三元运算符给小数赋值?

c# - LINQ to SQL 划分筛选器以获得更好的性能

c# - LINQ 加入多个 From 子句

c# - _ = Task.Run vs async void | Task.Run 与 Async Sub

c# - 替换多个字符串的更好方法 - C# 中的混淆

C# - 需要 Psuedo 单击一个窗口

linq - 如何辨别 Type 是否是静态数组初始值设定项?