<分区>
我最近开始使用 LINQ,它非常棒。我想知道 LINQ 是否允许我在不使用 foreach 的情况下将函数 - 任何函数 - 应用于集合的所有元素。类似于 python lambda 函数。
例如,如果我有一个 int 列表,我可以使用 LINQ 向每个元素添加一个常量吗
如果我有一个数据库表,我可以使用 LINQ 为所有记录设置一个字段吗?
我正在使用 C#
<分区>
我最近开始使用 LINQ,它非常棒。我想知道 LINQ 是否允许我在不使用 foreach 的情况下将函数 - 任何函数 - 应用于集合的所有元素。类似于 python lambda 函数。
例如,如果我有一个 int 列表,我可以使用 LINQ 向每个元素添加一个常量吗
如果我有一个数据库表,我可以使用 LINQ 为所有记录设置一个字段吗?
我正在使用 C#
最佳答案
解决此问题的常见方法是添加您自己的 ForEach
IEnumerable<T>
上的通用方法.这是我们在 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());
关于c# - 通过 LINQ 将函数应用于集合的所有元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/823532/