The*_*der 2 c# lambda extension-methods
问候,
我正在寻找一种转换方式
foreach (var sEvent in Events)
{
sEvent.SomeId = 0;
}
Run Code Online (Sandbox Code Playgroud)
至
Events.Set(m=>m.SomeId, 0);
Run Code Online (Sandbox Code Playgroud)
或类似的东西.
基本上我想把它作为一个单行事件,将所有"SomeId"设置为0;
有什么办法吗?
如果Events是List<T>你可以使用:
Events.ForEach( m => m.SomeId = 0 );
Run Code Online (Sandbox Code Playgroud)
如果Events是IEnumerable,ForEach没有实现,但你当然可以自己创建自己的ForEach IEnumerable.原因ForEach不是创建的IEnumerable,是因为他们不希望在IEnumerable副作用上使用扩展方法(这改变了原始集合).
在IEnumerable上实现ForEach很容易:
public static IEnumerable<T> ForEach<T>(this IEnumerable<T> source, Action<T> action)
{
foreach (T element in source)
action(element);
return source;
}
Run Code Online (Sandbox Code Playgroud)
这必须static像所有其他扩展方法一样进入类.
| 归档时间: |
|
| 查看次数: |
1242 次 |
| 最近记录: |