var values = new[] { "!", "@", "#", "$", "%", "^", "&", "*", "(", ")", "?" };

if (values.Any(s => passwordSec.Contains(s)) && passwordSec.Length > 7)


我一直在试图找出如何使任何方法从数组中获取2个或更多字符变为真实的方法。到目前为止,只需要在passwordSec中找到一个即可(这是密码字符串)。

最佳答案

Any明确表示如果任何一项与提供的谓词匹配,它将返回true。您要检查的是有多少项与提供的谓词匹配。因此,请使用Count

if (values.Count(s => passwordSec.Contains(s)) >= 2 && passwordSec.Length > 7)


或者,如果要检查它们是否使用了两个不同的values项,则可以使用Intersect,它会丢弃重复项:

if (values.Intersect(passwordSec).Count() >= 2 && passwordSec.Length > 7)

关于c# - C#LINQ从数组中抽取2个或更多,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44712816/

10-11 20:20