Как добавить новые заявки в массив заявок, используя цикл foreach в С#?

Я хочу добавить новые утверждения в массив утверждений в цикле foreach. Как это сделать?

        //userRoles is a list of string contains roles. 
        var userRoles = _repository.GetRolesOfUser(username); 
        var claim = new[]
        {
            new Claim("username", username)
                                                 
        };
        //I want to add new claims to claim like below. 
        //When I put Add I am getting error like this
        // "Claim[] doesn't contain definition for Add." 
        foreach(var userRole in userRoles)
        {
            claim.Add(new Claim("roles", userRole)); 
        }

В конце я хочу что-то вроде этого, где Role_1, Role_2 и т. д. из списка userRole.

var claim = new[]
            {
                new Claim("username", username)                    
                new Claim("roles", "Role_1")
                new Claim("roles", "Role_2")
                new Claim("roles", "Role_3")
                new Claim("roles", "Role_4")
             }

person StarLord    schedule 01.02.2021    source источник
comment
var claim = new List<Claim> не var claim = new[] (что бы инициализировало массив). Если вам нужен массив в конце, вы можете вызвать claim.ToArray();. Могу ли я предложить вам назвать ваши переменные, чтобы было понятнее (это коллекция, поэтому она должна быть во множественном числе: claims). Это делает чтение кода позже намного проще.   -  person Llama    schedule 01.02.2021
comment
@StarLord, какие новости? Помог ли вам мой ответ?   -  person Brando Zhang    schedule 09.02.2021
comment
@Brando Zhang Да, это сработало для меня.   -  person StarLord    schedule 09.02.2021


Ответы (1)


Как говорит Джон, массив в C# не содержит метода добавления. Он содержит только метод добавления.

Если вы хотите добавить новый элемент в массив, вы должны использовать добавление вместо добавления.

Более подробную информацию вы можете найти в приведенных ниже тестовых демонстрационных кодах:

        var claims = new[]{
        new Claim("username", "aaa")

    };
        claims.Append(new Claim("aaa","aaa"));

Ваши коды должны выглядеть так:

    //userRoles is a list of string contains roles. 
    var userRoles = _repository.GetRolesOfUser(username); 
    var claim = new[]
    {
        new Claim("username", username)
                                             
    };
    //I want to add new claims to claim like below. 
    //When I put Add I am getting error like this
    // "Claim[] doesn't contain definition for Add." 
    foreach(var userRole in userRoles)
    {
        claim .Append(new Claim("roles", userRole));
    }

Или вы можете использовать List<Claim> вместо var claims = new[], как показано ниже:

        var claim = new List<Claim>();

        claim.Add("username", "aaa");
        claim.Add("username", "bbbb");
person Brando Zhang    schedule 01.02.2021