如何跳过Foreach中的记录

Pol*_*olo 7 .net c# foreach try-catch

我试图通过简单的登录从Active Directory基础创建一个对象.问题是某些登录信息是有效的.

我怎么能只使用try-catch,这样如果抛出异常,只需跳到下一次登录?

这是代码:

foreach (var PharosUserItem in ListRef)
{
    ADUser User;
    try
    {
        User = new ADUser(PharosUserItem.UserLoginPharos);
    }
    catch (ByTel.DirectoryServices.Exceptions.UserNotFoundException ex)
    {
        break;
    }
}
Run Code Online (Sandbox Code Playgroud)

休息让我脱离了foreach,这不是我想要的.有任何想法吗?

Jos*_*eph 30

你正在寻找继续

foreach (var PharosUserItem in ListRef)
    {
        ADUser User;
        try
        {
            User = new ADUser(PharosUserItem.UserLoginPharos);
        }
        catch (ByTel.DirectoryServices.Exceptions.UserNotFoundException ex)
        {
            continue;
        }
    }
Run Code Online (Sandbox Code Playgroud)


Jon*_*eet 13

请改用continue语句:

foreach (var pharosUserItem in ListRef)
{
    ADUser user;
    try
    {
        user = new ADUser(pharosUserItem.UserLoginPharos);
    }
    catch (UserNotFoundException)
    {
        continue;
    }
    // Use "user" here
}
Run Code Online (Sandbox Code Playgroud)

(我在变量大小写方面做了一些改动,避免使用大量长的完全限定名称作为异常,并为异常提供一个变量,然后忽略它.)

请注意,如果有任何合理的方法可以获得有效用户列表并进行检查,那么这比使用流控制的例外要好,就像你在这里做的那样.这可能不太可行,但值得检查:)


tan*_*ius 5

你必须使用 continue;


The*_*TXI 5

使用该continue语句跳到下一次迭代.