【问题标题】:Convert foreach to lambda [closed]将 foreach 转换为 lambda [关闭]
【发布时间】:2018-11-05 03:27:46
【问题描述】:

刚开始在 c# 中使用 Lambda,我被这个绊倒了。如何将以下代码块转换为 lambda 表达式,将标头中的所有值添加到 DefaultRequestHeaders。

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

【问题讨论】:

  • 我想你会在这里找到类似的问题:stackoverflow.com/questions/1509442/linq-style-for-each
  • 我认为您指的是 LINQ。这不是我会使用 LINQ 的情况。 LINQ 通常用于查询操作(它的名字!)。您的循环与该用法不匹配。此外,您的循环已经非常直接且易于阅读。对其进行 LINQifying 会使它变得不那么清晰。

标签: c# .net


【解决方案1】:

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

using System.Threading.Tasks;

Parallel.ForEach(headers, header => 
    client.DefaultRequestHeaders.Add(header.Key, header.Value)
);

但在这种情况下我不会这样做。该类可能不是线程安全的,并且在性能方面没有任何收获。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多