将IDictionary <string,string>附加到WebHeaderCollection

时间:2015-09-04 02:34:28

标签: c# linq

如何将IDictionary<string,string>附加到System.Net.WebHeaderCollection

甚至可以附加2个System.Net.WebHeaderCollection个对象?我正在尝试向我的HttpWebRequest添加许多自定义标头,并覆盖名为request.Headers的源词典中的键值对。

我当前的代码遇到了转换问题:

  

错误1实例参数:无法从'System.Net.WebHeaderCollection'转换为'System.Collections.Generic.IEnumerable&gt;'

// IDictionary <string, string> customHeaders; // populated earlier in the code
var request = (HttpWebRequest)WebRequest.Create(requestUrl);

// Compiler error below
request.Headers.Concat(customHeaders).GroupBy(d => d.Key)
                    .ToDictionary(d => d.Key, d => d.First().Value);

1 个答案:

答案 0 :(得分:1)

试试这个:

var request = (HttpWebRequest)WebRequest.Create(requestUrl);
foreach(var customHeader in customHeaders)
    request.Headers.Add(customHeader.Key, customHeader.Value);

Concat不是就地操作,它只返回连接的集合。所以,即使它 编译,它也不会真正起作用。

在任何情况下,要使用通用IEnumerable迭代头文件,您需要这样做:

request.Headers.Cast<HttpRequestHeader>()

这应该清楚说明为什么你不能用 IEnumerable&lt; .HttpRequestHeader&gt; <连接 词典 /强>