【发布时间】: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 无效!!!你能找到答案吗?