我知道Lambda Expressions不仅仅适用于LINQ。但是我们可以使用Lambda Expression的可能场景是什么?没有Lambda Expression的这些例子的代码是什么?
答案 0 :(得分:1)
答案 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扩展方法,因为它会要求大量不必要的代码。