C#lambda表达式尝试显式指定类型参数

时间:2016-06-02 13:15:52

标签: c# lambda

我是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

在这段代码中,我在第2行遇到错误:

  

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

1 个答案:

答案 0 :(得分:5)

Dictionary<string, string>的元素为KeyValuePair<string, string>,因此您需要更改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();