如何使用linq将数组的每个值传递给方法

时间:2011-05-05 13:55:09

标签: .net c#-4.0

假设我有一个数组:

string[] s = GetArray();

和方法:

public bool CheckIfInArray() { .. }

我希望将该数组的每个值传递给方法,并在第一次匹配时获得bool结果(在第一次匹配之后没有理由循环到数组的最后一个元素)。

有点像这样:

s.ContainsAtLeasFirstMatching(x => CheckIfInArray(x))

我不想使用循环。是否可以通过LINQ实现这一目标?

2 个答案:

答案 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);