C# Can';不要在CookieCollection上使用LINQ,尽管枚举器是可访问的
大致如下,我想获得第一个具有给定URI的特定名称的cookieC# Can';不要在CookieCollection上使用LINQ,尽管枚举器是可访问的,c#,linq,C#,Linq,大致如下,我想获得第一个具有给定URI的特定名称的cookie Uri uri = new Uri(url); CookieContainer cookieJar = new CookieContainer(); ... CookieCollection cookies = cookieJar.GetCookies(uri); 然后,我可以像这样访问第一个(目前也是唯一的)cookie Cookie cookie = cookies[0]; Cookie cookie = cookies
Uri uri = new Uri(url);
CookieContainer cookieJar = new CookieContainer();
...
CookieCollection cookies = cookieJar.GetCookies(uri);
然后,我可以像这样访问第一个(目前也是唯一的)cookie
Cookie cookie = cookies[0];
Cookie cookie = cookies
.First(c => c.Name == "vanilla");
我看到这是一个集合,它有一个枚举器。然而,当我尝试使用LINQ时,这个集合似乎没有得到这样的效果
Cookie cookie = cookies[0];
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
。您可以使用Cast
创建IEnumerable
:
Cookie cookie = cookies.Cast<Cookie>().First(c => c.Name == "vanilla");
Cookie Cookie=cookies.Cast().First(c=>c.Name==“香草”);
CookieCollection
仅实现IEnumerable
而不是IEnumerable
。您可以使用Cast
创建IEnumerable
:
Cookie cookie = cookies.Cast<Cookie>().First(c => c.Name == "vanilla");
Cookie Cookie=cookies.Cast().First(c=>c.Name==“香草”);
你是说IEnumerable
不是LINQ'able,它是通用的对应物IEnumerable
是吗?我从来没有注意到(从2007年开始使用LINQ,不知何故,我没有在非类型版本上使用它)。@KonradViltersten-是的,几乎所有的LINQ方法都在IEnumerable
上,而不是IEnumerable
,唯一的IEnumerable
方法是Cast
和OfType
,它们用于从非泛型序列创建泛型序列。那么,您知道什么?12年后,我仍然学习新的基本知识。不确定是惊讶还是尴尬……:)你是说IEnumerable
不是LINQ'able,它是通用的对应物IEnumerable
是吗?我从来没有注意到(从2007年开始使用LINQ,不知何故,我没有在非类型版本上使用它)。@KonradViltersten-是的,几乎所有的LINQ方法都在IEnumerable
上,而不是IEnumerable
,唯一的IEnumerable
方法是Cast
和OfType
,它们用于从非泛型序列创建泛型序列。那么,您知道什么?12年后,我仍然学习新的基本知识。不确定是惊讶还是尴尬……:)