我最近开始使用LINQ,它令人惊叹.我想知道LINQ是否允许我在不使用foreach的情况下将函数(任何函数)应用于集合的所有元素.类似python的lambda函数.
例如,如果我有一个整型列表,是否可以使用LINQ向每个元素添加一个常量
如果我有一个DB表,我可以使用LINQ为所有记录设置一个字段吗.
我用的是C#
我最近开始使用LINQ,它令人惊叹.我想知道LINQ是否允许我在不使用foreach的情况下将函数(任何函数)应用于集合的所有元素.类似python的lambda函数.
例如,如果我有一个整型列表,是否可以使用LINQ向每个元素添加一个常量
如果我有一个DB表,我可以使用LINQ为所有记录设置一个字段吗.
我用的是C#
解决此问题的一种常见方法是在IEnumerable<T>
上添加您自己的ForEach
泛型方法.这是我们在MoreLINQ里有的一个:
public static void ForEach<T>(this IEnumerable<T> source, Action<T> action)
{
source.ThrowIfNull("source");
action.ThrowIfNull("action");
foreach (T element in source)
{
action(element);
}
}
(其中ThrowIfNull
是任何引用类型的扩展方法,这是显而易见的.)
很有意思的是看看这是否是.NET 4.0.它与LINQ的功能风格背道而驰,但毫无疑问,很多人都觉得它很有用.
一旦你得到了它,你就可以写下这样的东西:
people.Where(person => person.Age < 21)
.ForEach(person => person.EjectFromBar());