问候,
我正在寻找转换方式
foreach (var sEvent in Events)
{
sEvent.SomeId = 0;
}
到
Events.Set(m=>m.SomeId, 0);
或类似的东西。
所以基本上我想把它设为一行,将所有“SomeId”设置为0;
有什么办法吗?
答案 0 :(得分:6)
如果Events
是List<T>
,您可以使用:
Events.ForEach( m => m.SomeId = 0 );
如果Events
为IEnumerable
,则ForEach
未实现,但您当然可以自己创建自己的ForEach IEnumerable
。 ForEach
未创建IEnumerable
的原因是they did not want to have extension method on IEnumerable
with side effects(改变了原始集合)。
在IEnumerable上实现ForEach非常简单:
public static IEnumerable<T> ForEach<T>(this IEnumerable<T> source, Action<T> action)
{
foreach (T element in source)
action(element);
return source;
}
这必须像所有其他扩展方法一样进入static
类。
答案 1 :(得分:2)
你可以这样做
Events.ToList().ForEach(Event => Event.SomeId = 0);
答案 2 :(得分:2)
如果Events
是List<T>
,您只需使用
Events.ForEach(e => e.SomeId = 0);
答案 3 :(得分:1)
如果事件是列表,您可以这样做:
Events.ForEach(m => m.SomeId = 0);