您好我在Listview中有一个对象集合,我需要知道我是否可以使用lambda表达式迭代它们。并在表达式中调用它的方法。
让我们说我需要将一群人保存到数据库中。
List<People> someList;
someList.Select(person => person.Save());
这可能吗?到目前为止,我还没有能够使它工作。 感谢
答案 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());