Прежде всего, я создаю бесплатное i для отслеживания того, как далеко вы проходите через массив, затем измените foreach на:
int[] userid = new int[usernames.length];
i=0;
foreach(string username in usernames)
{
User user = AuthRepository.GetUser(username);
userid[i] = user.ID;
i++;
}
int[] roleid = new int[...];
i = 0;
Таким образом, вы заполните массив userid, чтобы он соответствовал массиву имени пользователя. (и то же самое для роли)
Вы уверены, что concat - это то, что вы хотите? Не лучше ли объявить 2d массив
int [,] role = new ...
затем заполните его, поскольку concat просто добавляет два массива вместе, чтобы у вас был намного более длинный массив.
редактирование:
concat возьмет второй массив и добавит его в конец первого, создавая более длинный массив, поэтому, если у вас есть массивы:
userid[1,2,3]
roleid[7,8,9]
затем userid.concat (roleid). ToArray даст вам более длинный массив
result = int [6] {1,2,3,7,8,9} Что, вероятно, не то, что вы хотите.
Я бы использовал списки, мне нравятся списки. И тогда я бы создал ваш класс userRole, в котором, предположительно, есть 3 целых числа (для UserRoleid, Roleid и userid), затем я бы повторил цикл со счетчиком и использовал его для создания вашего userRole и добавления его в базу данных. :
UserRole userRole;
i = 0;
foreach(int id in userid)
{
userRole = new UserRole();
userRole.id = i; // Note this line and the next two could be done
userRole.user = id; // in the constructor, passing i, id, roleid[i]
userRole.role = roleid[i];
db.UserRoles.Add(userRole);
i++;
}
хотя я не уверен, как настроена база данных, поэтому не знаю, сработает ли это.