Lambda表达式和方法调用

时间:2011-03-06 09:35:22

标签: c# .net lambda linq-to-entities

您好我在Listview中有一个对象集合,我需要知道我是否可以使用lambda表达式迭代它们。并在表达式中调用它的方法。

让我们说我需要将一群人保存到数据库中。

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

这可能吗?到目前为止,我还没有能够使它工作。 感谢

3 个答案:

答案 0 :(得分:9)

您可以使用通用列表的ForEach方法:

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

答案 1 :(得分:4)

someList.ForEach(p => p.Save());

答案 2 :(得分:3)

听起来你想要一个foreach声明:

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

但是如果真的希望在lambda表达式和LINQ中执行它,那么上面代码的问题就是.Select(...)返回一个IEnumerable / IQueryable,它会创建一个新的查询但不执行lambda表达式。

您可以通过调用强制枚举IEnumerable / IQueryable所代表的数据的扩展方法来强制 lambda进行评估。例如:

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

但这也假设您的Save()方法返回非void。

编辑: 正如其他人所指出的那样,如果您专门使用List&lt;&gt;,那么您也可以这样做:

someList.ForEach(person => person.Save());