gpt4 book ai didi

c# - LINQ 是否有类似 Match 的语法

转载 作者:太空宇宙 更新时间:2023-11-03 21:17:21 24 4
gpt4 key购买 nike

这是我试图优雅解决的案例。假设我有一个可枚举对象(它可能是一个相当大的可枚举对象,我宁愿只枚举一次)。还可以说,如果序列中返回的对象与操作的特定条件匹配,我想运行特定的操作。

在函数式语言中,我可以设置一系列匹配项,在找到匹配项时执行。我想要在 C# 中这样的东西。尽可能使用 LINQ。

我最接近的是使用策略模式和一个简单的规则引擎,该引擎按顺序调用每个已注册的策略,直到找到匹配项。有没有更简单的方法?

我想做的是。

myEnum.Match((item)=>item.MatchesCondition, (item)=>ExecuteFunction(item))
.Match((item)=>item.MatchesSomeOtherCondition, (item)=>ExecuteSomeOtherFunction(item));

最佳答案

您可以创建一个 extension method 匹配:

public static class Extensions
{
public static IEnumerable<T> Match<T>(this IEnumerable<T> items, Func<T, bool> condition, Action<T> action)
{
foreach (T item in items)
{
if (condition(item))
{
action(item)
}
else
{
yield return item;
}
}
}
}

这将遍历 items 中的每个项目,并且:

  • 如果符合条件,执行action
  • 否则,通过 iterator 返回项目

关于c# - LINQ 是否有类似 Match 的语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33108972/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com