理解C#中的lambda表达式

mar*_*ixy 2 c# linq lambda

我是lambdas的新手,在我尝试做一些更复杂的事情之前,他们看起来相当直接.我有这本字典.

Dictionary<int, int> dict = new Dictionary<int,int>();
Run Code Online (Sandbox Code Playgroud)

其中我想获得具有最大值的key-val对的键.我尝试的是:

dict.Keys.Max(g => dict[g])
Run Code Online (Sandbox Code Playgroud)

理由是,在Keys列表中,选择dict [key]最大的那个.但是,这会选择最大的值,而不是相应的键.

rec*_*ive 6

dict.Keys.OrderByDescending(g => dict[g]).First()将完成你想要的,但对于大型词典可能效率低下. MaxBy在John Skeet的MoreLinq中,你会有效地完成你想要的.