【问题标题】:Cannot convert foreach to linq select无法将 foreach 转换为 linq 选择
【发布时间】:2019-07-27 07:07:18
【问题描述】:

我正在尝试将如下所示的 foreach 循环转换为 Linq 选择语句

IEnumerable<string> tokensFromPlans = GetTokens();
foreach (var token in tokensFromPlans)
{
    DeleteFromQueue(token);
}

以上工作正常。

我正在尝试将其转换为 Linq 以了解 Linq。

tokensFromPlans.Select(token => DeleteFromQueue(token));

这失败了

方法的类型参数…不能从用法中推断出来

我在这里很迷茫。我对 Linq 的理解是我们对变量 tokensFromPlans 执行选择语句,它本质上是遍历集合。

在集合中的每个成员上,我们调用函数DeleteFromQueue

我不明白我做错了什么。

我已阅读 The type arguments for method cannot be inferred from the usage,但我不认为这是问题所在,因为我没有处理如此复杂的事情。

【问题讨论】:

  • Select 应该返回一个值。显然DeleteFromQueue 什么都不返回(void)。您选择了错误的方法来练习 LINQ。而是找到需要将一个集合转换为另一个集合的逻辑,这对于Select 来说是一个好的开始
  • 呃……我认为这可能是问题所在。 DeleteFromQueue 无效!!!你能找到答案吗?

标签: c# linq


【解决方案1】:

Select 方法的委托应该返回一个值。
显然 DeleteFromQueue 什么都不返回(void)。您选择了错误的方法来练习 LINQ。

而是找到一个逻辑,您需要将一个集合转换为另一个集合,这对于Select 来说是一个好的开始

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-06-05
    • 2011-03-12
    • 1970-01-01
    • 2016-09-30
    • 2019-07-22
    • 1970-01-01
    • 1970-01-01
    • 2022-01-01
    相关资源
    最近更新 更多