我是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>)
的类型参数不能 从用法推断。尝试指定类型参数 明确。
答案 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();