C# 有没有一种方法可以组合foreach循环

C# 有没有一种方法可以组合foreach循环,c#,C#,我有两份清单如下: valuesToMatch = ["someemail@something.com", "123-45-6789"] regexValuesToMatchWith = ["^[a-zA-Z0-9._%+-]+@[a-z0-9-]+\.(com|org|edu|)(\.[a-z]{2,3})?", "^\d{3}-\d{2}-\d{4}$"] 我想将电子邮件与电子邮件正则表达式匹配,将SSN编号与SSN正则表达式匹配。如果两者都是真的,那么只有我可以添加数据,否则不能 pub

我有两份清单如下:

valuesToMatch = ["someemail@something.com", "123-45-6789"]
regexValuesToMatchWith = ["^[a-zA-Z0-9._%+-]+@[a-z0-9-]+\.(com|org|edu|)(\.[a-z]{2,3})?", "^\d{3}-\d{2}-\d{4}$"]
我想将电子邮件与电子邮件正则表达式匹配,将SSN编号与SSN正则表达式匹配。如果两者都是真的,那么只有我可以添加数据,否则不能

public bool MatchRegex(Data data)
{
    var regexMatch = false;
    var valuesToMatch = GetValuesToMatch(data.values);
    var regexValuesToMatchWith = service.Validations(data.id);
    foreach (var toMatch in valuesToMatch)
    {
        foreach (var withRegex in regexValuesToMatchWith)
        {
            var r = new Regex(withRegex, RegexOptions.IgnoreCase);
            if (r.IsMatch(toMatch))
            {
                regexMatch = true;
            }
        }
    }

    if (regexMatch)
    {
        return dbContext.Add(data);
    }

    return false;
}

我在网上看过一些方法,但我不确定这是否可能实现。

也许
for
循环更适合您试图实现的目标

bool regexMatch = true;

for (int i = 0; i < withRegex.Length; i++)
{
        var r = new Regex(valuesToMatch[i], RegexOptions.IgnoreCase);

        if (!r.IsMatch(regexValuesToMatchWith[i]))
        {
            regexMatch = false;
            break;
        }
    }
}
bool regexMatch=true;
for(int i=0;i
foreach
循环将每个值与email和SSN regex进行比较,这是不必要的。除此之外,如果您像现在这样将
regexMatch
设置为true,那么即使其中一个比较不匹配,它也将为true


根据您的示例,我假设
valuesToMatch
regexValuesToMatchWith
始终具有相同的大小和正确的数据顺序。

上面的代码是否给出了u输出?regex和值的顺序是否相同,项目数是否相同?@Richardissimo,是的。第一个正则表达式值应该是电子邮件等的值。@ershoaib,它返回true或FALSE然后Nathalia的答案就是你需要的,现在她已经纠正了拼写错误,你已经确认了她所做的假设。拼写
y
,你需要弄清楚这个答案所做的假设。