Лямбда-выражения и вызовы методов - PullRequest
3 голосов
/ 06 марта 2011

Привет, у меня есть коллекция объектов в ListView, и мне нужно знать, могу ли я перебрать их с помощью лямбда-выраженияи вызвать метод в этом выражении.

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

List<People> someList;
someList.Select(person => person.Save());

это возможно сделать?до сих пор я не смог заставить его работать.спасибо

Ответы [ 3 ]

9 голосов
/ 06 марта 2011

Вы можете использовать метод ForEach общего списка:

List<People> someList;
someList.ForEach(person => person.Save());
4 голосов
/ 06 марта 2011
someList.ForEach(p => p.Save());
3 голосов
/ 06 марта 2011

Звучит так, будто вы хотите оператор foreach:

foreach(People p in someList)
{
    p.Save();
}

Но если вы действительно хотите сделать это в лямбда-выражениях и LINQ, то ваша проблема с приведенным выше кодом заключается в следующем.Select (...) возвращает IEnumerable / IQueryable, который создает новый запрос, но не выполняет ваши лямбда-выражения.

Вы можете заставить лямбду вычислять, вызвав метод расширения, который вызывает перечисление данных, которые представляет IEnumerable / IQueryable.Например, выполнив:

someList.Select(person => person.Save()).Count();

, но это также предполагает, что ваш метод Save () возвращает не void.

Редактировать: Как уже отмечали другие, если вы работаете специально сСписок <>, тогда вы также можете сделать:

someList.ForEach(person => person.Save());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...