Я все еще новичок в программировании и пытаюсь составить список заблокированных пользователей домена, но не уверен, как я могу ссылаться на параметр счетчиков в массиве

Не могли бы вы помочь? часть кода:

else if (s.StartsWith("lookup"))
 {
   var lockedUsers = new List<UserPrincipal>();
   using (var context = new PrincipalContext(ContextType.Domain, "test.local"))
   {
    GroupPrincipal grp = GroupPrincipal.FindByIdentity(context, IdentityType.SamAccountName, "Domain Users");
    foreach (var userPrincipal in grp.GetMembers(false))
                            {
                                var user1 = UserPrincipal.FindByIdentity(context, IdentityType.SamAccountName, userPrincipal.SamAccountName);
                                if (user1 != null)
                                {
                                    if (user1.IsAccountLockedOut())
                                    {
                                        lockedUsers.Add(user1);
                                    }
                                }
                            }
                        }

                            console.writeline(lockedUsers[0].samaccountname);

Проблема в том, что при использовании lockedUsers[0].samaccountname я, очевидно, получаю только первый элемент (пользователя), но как ссылаться на каждый счет? есть подстановочный знак или что-то, что я могу использовать? Я пробовал использовать foreach, но не знаю, как его реализовать, так как хочу получить параметр .SamAccountName для каждого подсчитанного заблокированного пользователя.

На выходе должно быть значение SamAccountName (для каждого счетчика в заблокированных пользователях).

Благодарность

0
Daniel A 26 Фев 2018 в 05:45

1 ответ

Лучший ответ

Типичное решение будет выглядеть так:

foreach (var u in lockedUsers)
{
    Console.WriteLine(u.SamAccountName);
}

Или же:

for (int i=0; i<lockedUsers.Count; i++)
{
    Console.WriteLine(lockedUsers[i].SamAccountName);
}

Есть также несколько хитрых способов сделать это, например:

lockedUsers.ForEach((lu) => { Console.WriteLine(lu.SamAccountName); })  

... (спасибо Рону) или ...

Console.WriteLine(string.Join("\r\n", lockedUsers.Select( u => u.SamAccountName )));
0
John Wu 26 Фев 2018 в 06:33