Dot-Net
如何將 Cookies 集合轉換為通用列表?容易地
任何人都知道我怎樣才能轉換
Request.Cookies成一個List<HttpCookie>?以下內容不起作用,因為它引發了異常。List<HttpCookie> lstCookies = new List<HttpCookie>( Request.Cookies.Cast<HttpCookie>());例外:無法將“System.String”類型的對象轉換為“System.Web.HttpCookie”類型
發生這種情況的原因是
NameObjectCollectionBase,派生自列舉的類型是Request.Cookies對集合的鍵而不是對值的列舉。因此,當您列舉Request.Cookies集合時,您將獲得密鑰:public virtual IEnumerator GetEnumerator() { return new NameObjectKeysEnumerator(this); }這意味著以下將起作用:
string[] keys = Request.Cookies.Cast<string>().ToArray();我想您可以嘗試以下可能被認為很難看但會起作用的方法:
List<HttpCookie> lstCookies = Request.Cookies.Keys.Cast<string>() .Select(x => Request.Cookies[x]).ToList();更新:
正如@Jon Benedicto 在評論部分和他的回答中指出的那樣,使用該
AllKeys屬性更優化,因為它節省了演員:List<HttpCookie> lstCookies = Request.Cookies.AllKeys .Select(x => Request.Cookies[x]).ToList();