我想做
var testData = new[] { "aap", "aal", "noot", "mies", "wim", "zus", "jet" };
bool result = testData.Or(s => s.Contains("z"));
但IEnumerable上没有'或'方法。
我尝试使用
编写Or扩展方法public static class extensions
{
public static bool Or<TSource>(this IEnumerable<TSource> sourceCollection, Func<TSource, bool> selector)
{
return sourceCollection.Where(selector).Select(selector).FirstOrDefault();
}
}
当然,我们的想法是不要经常调用selector()。第一次评估为true的调用确定结果。我的解决方案的问题是在第一个返回true的项目上调用了selector()两次。我想这是因为调用了Select()。
我该如何解决这个问题?
答案 0 :(得分:1)
var testData = new[] { "aap", "aal", "noot", "mies", "wim", "zus", "jet"};
bool result = testData.Any(s => s.Contains("z"));
这将在第一场比赛中停止评估,如你所愿。
答案 1 :(得分:1)
我不确定我是否了解您的问题,但是Linq扩展方法Any是否符合您的目标?