【发布时间】:2015-10-13 17:29:34
【问题描述】:
这是我试图优雅地解决的一个案例。假设我有一个可枚举(它可能是一个相当大的可枚举,我宁愿只枚举一次)。还假设如果序列中返回的对象与操作的某些条件匹配,我想要运行特定的操作。
在函数式语言中,我可以设置在找到匹配项时执行的匹配序列。我想要在 C# 中这样的东西。尽可能使用 LINQ。
我最接近的方法是使用带有简单规则引擎的策略模式,该引擎按顺序调用每个注册的策略,直到找到匹配项。有没有更简单的方法?
我想做的是。
myEnum.Match((item)=>item.MatchesCondition, (item)=>ExecuteFunction(item))
.Match((item)=>item.MatchesSomeOtherCondition, (item)=>ExecuteSomeOtherFunction(item));
【问题讨论】:
-
你能展示一些示例代码吗?我对你到底要什么有点困惑。
-
我在您输入评论时正在这样做。
-
您是在尝试匹配枚举器中的特定项目,还是只想在找到匹配项时调用该函数?我的意思是您可以轻松地为上述逻辑创建一个扩展方法,或者只使用
foreach和if/else或switch -
为什么不在结果上使用
Where(),然后使用foreach? -
如果
ExecuteFunction已经为同一个对象调用过,是否应该为给定对象调用ExecuteSomeOtherFunction?
标签: c# linq pattern-matching strategy-pattern