Области использования лямбда-выражений в c # - PullRequest
0 голосов
/ 05 июня 2011

Я знаю, что лямбда-выражения не только для LINQ. Но каковы возможные сценарии, в которых мы можем использовать лямбда-выражение? каков код этих примеров без лямбда-выражения?

Ответы [ 2 ]

1 голос
/ 05 июня 2011

Допустим, у вас есть список 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, но без лямбда-выражений:

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; });

но это не сравнится с лямбда-выражениями в краткости.

Я бы не хотел использовать какие-либо методы расширения LINQ, если бы лямбда-выражения не были реализованы в языке, потому что это потребовало бы большого количества ненужного кода.

1 голос
/ 05 июня 2011

При работе с анонимными методами я обнаружил, что многому научился, просто используя ReSharper .

Предложения относительно лямбда-выражений и анонимных методов от ReSharper помогли мне понять, как и когдаиспользуйте их.

Может быть, это тоже подойдет вам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...