2011-05-05 38 views
0

让阵列中的每个值传递给方法,说我有一个数组:如何使用LINQ

string[] s = GetArray(); 

和方法:

public bool CheckIfInArray() { .. } 

我想传递到该数组的每个值方法,只要有第一次匹配(第一次匹配后没有理由循环到数组的最后一个元素),就会得到布尔结果。

像这样的:

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

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

回答

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

你可以用Any()方法做到这一点。

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

你可能想看看在Enumerable Methods MSDN page看到至极方法可供你和他们是什么用途。

+2

为什么不's.Any(CheckIfInArray)'? – Andrey 2011-05-05 14:01:29

+0

@Andrey,由于推理的魔力,你也可以这样做。一般来说,我已经发现,显式帮助大多数其他开发人员了解使用内联代理时究竟发生了什么,特别是在扩展方法中。 – 2011-05-05 14:06:31

+0

这里没有魔法,它们有相同的签名。那么,我可怜那些使用lambdas并且不知道代表的基础知识的开发人员。 – Andrey 2011-05-05 14:21:10