如何创建采用 lambda 表达式的扩展方法
您好,
我正在寻找一种转换方法
foreach (var sEvent in Events)
{
sEvent.SomeId = 0;
}
或
Events.Set(m=>m.SomeId, 0);
类似的方法。
所以基本上我想让它成为一个单行事件,将所有“SomeId”设置为0;
有什么办法吗?
Greetings,
I'm looking for a way to convert
foreach (var sEvent in Events)
{
sEvent.SomeId = 0;
}
to
Events.Set(m=>m.SomeId, 0);
or something like this.
So basicly I want to make it a one line event that sets all "SomeId" to 0;
Is there any way?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
如果
Events
是List
,您可以使用:如果
Events
是IEnumerable
,ForEach< /code> 尚未实现,但您当然可以自己制作适用于
IEnumerable
的自己的 ForEach。没有为IEnumerable
创建ForEach
的原因是 他们不希望在IEnumerable
上使用带有副作用的扩展方法(这会改变原始集合)。在 IEnumerable 上实现 ForEach 非常简单:
这必须像所有其他扩展方法一样进入静态类。
If
Events
is aList<T>
you can use:If
Events
isIEnumerable
,ForEach
is not implemented, but you can of course make your own ForEach that works onIEnumerable
yourself. The reasonForEach
is not created forIEnumerable
, is that they did not want to have extension method onIEnumerable
with side effects (that altered the original collection).Implementing ForEach on IEnumerable is easy enough:
This has to go into a
static
class just like all other extension methods.你可以这样做
You can do this
如果
Events
是List
您只需使用If
Events
is aList<T>
you can simply use如果事件是一个列表,你可以这样做:
If Events is a List, you could do: