使用Func<>;键入以分配/更改变量
本文关键字:分配 改变 变量 lt Func gt 使用 | 更新日期: 2023-09-27 18:00:30
我已经知道下面的代码不适用于
string s = "";
someEnumerable.Select(x => s+= x);
我想知道的是,是否有其他方法(最好使用linq)可以在不使用循环语句(如"for"或"foreach")的情况下获得上述行为。
谢谢。
string s = someIEnumerable.Aggregate((acc, next) => acc + next);
acc是累加器(到目前为止我们已经聚合/组合了),next是枚举的下一个元素。因此,在这里,我获取到目前为止得到的内容(最初是一个空字符串),并返回附加了下一个元素的字符串。
如果您只处理字符串,则更简单。
var s = string.Join(string.Empty, someEnumerable)
使用Aggregate
或编写自己的ForEach扩展方法:
public static void ForEach<T>(this IEnumerable<T> enumeration, Action<T> action)
{
foreach (T item in enumeration) { action(item); }
}
然后做
someEnumerable.ForEach(x => s += x);
文字答案:
string s = "";
Func<string, string> myFunc = x =>
{
s += x;
return x;
};
IEnumerable<string> query = source.Select(myFunc); //note, deferred - s not yet modified.