将foreach转换为lambda

时间:2018-05-25 17:19:52

标签: c# .net

刚开始使用c#中的Lambda,我对此感到沮丧。如何将以下代码块转换为lambda表达式,将标题中的所有值添加到DefaultRequestHeaders中。

var client = new HttpClient();
foreach (var header in headers)
{
    client.DefaultRequestHeaders.Add(header.Name, header.Value);
} 

2 个答案:

答案 0 :(得分:-1)

这不是Lambda表达式的用例(正如关于Sim的回答的讨论所示),但如果你想利用并行处理,那可能就是这样:

using System.Threading.Tasks;

Parallel.ForEach(headers, header => 
    client.DefaultRequestHeaders.Add(header.Key, header.Value)
);
但是,在这种情况下,我不会这样做。该类可能不是线程安全的,并且在性能方面没有任何东西可以获得。

答案 1 :(得分:-2)

如果标题是列表,则可以使用List.ForEach()。如果它是IEnumerable类型,则可以使用headers.ToList()。ForEach()。

var client = new HttpClient();
headers.ForEach(header =>
{ 
    client.DefaultRequestHeaders.Add(header.Name, header.Value); 
});

编辑:如果您想了解有关良好的foreach练习的更多信息,请阅读评论。