当Linq表达式的一部分时,传递给lambda的值是多少?

时间:2016-12-05 22:35:14

标签: c# linq dictionary lambda

如果我有:

public Dictionary<string, int> ChangeDictionary(Dictionary<string, int> myDictionary)
        {
            myDictionary.OrderBy(a => rnd.Next());
        }

什么是“a”?我知道它是匿名函数的参数,但我不知道这个语法是什么。我无法从MSDN文档中看出来。是“a”字典myDictionary

编辑:抱歉。什么是“a”,“我的意思是作为参数a的值传入的内容。是myDictionary吗?

1 个答案:

答案 0 :(得分:4)

&#34; a&#34;是一个参数。你的lambda可以改写:

private int MyOrderSelector(KeyValuePair<string, int> a)
{
    return rnd.Next();
}

据我所知,你只是称它为参数。它的类型取决于lambda的签名。在这种情况下,OrderBy需要Func<KeyValuePair<string, int>, int>

您可以通过intellisense或使用LINQ来判断a的类型是什么;参数是枚举的集合中的单个项目。由于DictionaryIEnumerable<KeyValuePair<K, V>>,因此项目也是KeyValuePair

对于编辑,在此特定的情况下,重复调用lambda,字典中的每个项目轮流作为参数值。更一般地说,a的值是调用者作为第一个参数传递的任何值。