Lambda表达式c#中的常用用法区域

时间:2011-06-05 10:59:26

标签: c# lambda

我知道Lambda Expressions不仅仅适用于LINQ。但是我们可以使用Lambda Expression的可能场景是什么?没有Lambda Expression的这些例子的代码是什么?

2 个答案:

答案 0 :(得分:1)

在处理匿名方法时,我发现我只是使用ReSharper学到了很多东西。

关于来自ReSharper的lambda表达式和匿名方法的建议帮助我理解了如何以及何时使用它们。

也许这对你来说也是一个选择。

答案 1 :(得分:1)

假设您有一个Person个对象的列表,并希望从中找出Dictionary<int, string>,以便能够通过他的SSN查找人名。

使用ToDictionary方法很简单:

var dictionary = Persons.ToDictionary(p => p.SSN, p => p.Name);

另一种方法是创建一个字典,然后使用foreach循环:

var dictionary = new Dictionary<int, string>();
foreach (Person p in Persons) {
    dictionary.Add(p.SSN, p.Name);
} 

这有点罗嗦并隐藏意图。

您可以使用ToDictionary但不使用lambda表达式:

var dictionary = Persons.ToDictionary(GetPersonKey, GetPersonValue);

//....

int GetPersonKey(Person p) {
    return p.SSN;
} 

string GetPersonValue(Person p) {
    return p.Name;
}

显然不是那么简洁。

你可以和匿名代表一起去:

var dictionary = Persons.ToDictionary(delegate(Person p) { return p.SSN; },                                 
                                      delegate(Person p) { return p.Name; });

但它没有简洁地与lambda表达式进行比较。

如果lambda表达式没有在语言中实现,我不想使用任何LINQ扩展方法,因为它会要求大量不必要的代码。