【问题标题】:C# lambda expression Try specifying the type arguments explicitlyC# lambda 表达式尝试显式指定类型参数
【发布时间】:2016-06-02 13:15:52
【问题描述】:

我是 C# 新手,我不明白如何在 lambda 表达式中指定 args。我有以下代码:

Dictionary<string,string> MyDictionary = some key + some value;

var myReultList= MyDictionary.Select(MyMethod).ToList();
var myReult= await Task.WhenAll(myReultList);

private async Task<string> MyMethod(string arg1, string arg2){
    //do some async work and return value
}

如何将字典键指定为arg1,将字典值指定为arg2

在此代码中,我在第二行出现错误:

错误 CS0411 方法 Enumerable.Select<TSource, TResult>(IEnumerable<TSource>, Func<TSource, TResult>) 的类型参数不能 从用法推断。尝试指定类型参数 明确的。

【问题讨论】:

  • MyDictionary.Select(kvp =&gt; return MyMethod(kvp.Key,kvp.Value).ToList()

标签: c# lambda


【解决方案1】:

Dictionary&lt;string, string&gt;的元素是KeyValuePair&lt;string, string&gt;,所以需要更改MyMethod的参数类型来匹配:

private async Task<string> MyMethod(KeyValuePair<string, string> pair) 
{
        string arg1 = pair.Key;
        string arg2 = pair.Value;
        ...
}

或者,您可以解压 lambda 中的值:

var myResultList = MyDictionary.Select(kvp => MyMethod(kvp.Key, kvp.Value)).ToList();

【讨论】:

    猜你喜欢
    • 2020-07-23
    • 1970-01-01
    • 2023-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多