如何创建采用 lambda 表达式的扩展方法

发布于 2024-10-30 19:44:07 字数 256 浏览 1 评论 0原文

您好,

我正在寻找一种转换方法

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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

二手情话 2024-11-06 19:44:07

如果 EventsList,您可以使用:

Events.ForEach( m => m.SomeId = 0 );

如果 EventsIEnumerableForEach< /code> 尚未实现,但您当然可以自己制作适用于 IEnumerable 的自己的 ForEach。没有为 IEnumerable 创建 ForEach 的原因是 他们不希望在 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;
}

这必须像所有其他扩展方法一样进入静态类。

If Events is a List<T> you can use:

Events.ForEach( m => m.SomeId = 0 );

If Events is IEnumerable, ForEach is not implemented, but you can of course make your own ForEach that works on IEnumerable yourself. The reason ForEach is not created for IEnumerable, is that they did not want to have extension method on IEnumerable with side effects (that altered the original collection).

Implementing ForEach on IEnumerable is easy enough:

public static IEnumerable<T> ForEach<T>(this IEnumerable<T> source, Action<T> action)
{
  foreach (T element in source) 
    action(element);
  return source;
}

This has to go into a static class just like all other extension methods.

戏剧牡丹亭 2024-11-06 19:44:07

你可以这样做

Events.ToList().ForEach(Event => Event.SomeId = 0);

You can do this

Events.ToList().ForEach(Event => Event.SomeId = 0);
一桥轻雨一伞开 2024-11-06 19:44:07

如果 EventsList 您只需使用

Events.ForEach(e => e.SomeId = 0);

If Events is a List<T> you can simply use

Events.ForEach(e => e.SomeId = 0);
以酷 2024-11-06 19:44:07

如果事件是一个列表,你可以这样做:

Events.ForEach(m => m.SomeId = 0);

If Events is a List, you could do:

Events.ForEach(m => m.SomeId = 0);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文