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

.net 如何使用linq将数组的每个值传递给方法,.net,c#-4.0,.net,C# 4.0,假设我有一个数组: string[] s = GetArray(); 方法: public bool CheckIfInArray() { .. } 我希望将该数组的每个值传递给该方法,并在有任何第一次匹配时立即获得bool结果(在第一次匹配之后,没有理由循环到数组的最后一个元素) 有点像这样: s.ContainsAtLeasFirstMatching(x => CheckIfInArray(x)) 我不想使用循环。使用LINQ可以实现这一点吗?您可以使用任意()方法实现这一点 您

假设我有一个数组:

string[] s = GetArray();
方法:

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

有点像这样:

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

我不想使用循环。使用LINQ可以实现这一点吗?

您可以使用任意()方法实现这一点


您可能需要查看,以了解哪些方法对您可用以及它们的用途。

您可以使用Any()方法来实现这一点


您可能需要查看,以了解您可以使用哪些方法以及它们的用途。

我认为该方法的签名实际上是:

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

我认为该方法的签名实际上是:

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

为什么不
s.Any(CheckIfInArray)
?@Andrey,由于推理的魔力,你也可以这样做。总的来说,我发现显式有助于大多数其他开发人员理解使用内联委托时到底发生了什么,特别是在扩展方法中。这里没有什么神奇之处,它们具有相同的签名。嗯,我很同情那些使用lambdas的开发人员,他们不知道委托的基本知识。为什么不
s.Any(CheckIfInArray)
?@Andrey,由于推理的魔力,你也可以这样做。总的来说,我发现显式有助于大多数其他开发人员理解使用内联委托时到底发生了什么,特别是在扩展方法中。这里没有什么神奇之处,它们具有相同的签名。好吧,我很遗憾那些使用lambdas并且不知道委托基础知识的开发人员。