假设我有一个数组:
string[] s = GetArray();
和方法:
public bool CheckIfInArray() { .. }
我希望将该数组的每个值传递给方法,并在第一次匹配时获得bool结果(在第一次匹配之后没有理由循环到数组的最后一个元素)。
有点像这样:
s.ContainsAtLeasFirstMatching(x => CheckIfInArray(x))
我不想使用循环。是否可以通过LINQ实现这一目标?
答案 0 :(得分:3)
您可以使用Any()方法执行此操作。
s.Any(x => CheckIfInArray(x))
您可能需要查看Enumerable Methods MSDN page,了解您可以使用哪些方法以及它们的用途。
答案 1 :(得分:3)
我认为该方法的签名实际上是:
public bool CheckIfInArray(string str) { .. }
在这种情况下,你可以写:
string[] s = GetArray();
bool atLeastOneMatch = s.Any(CheckIfInArray);
如果您对使用第一个匹配元素感兴趣,还可以使用FirstOrDefault
:
// firstMatch will be null if there is no match
string firstMatch = s.FirstOrDefault(CheckIfInArray);