2

I'm adding new items to a list from a IEnumerable (query.Roles).

var query = GetRoles();
var vm = new CreateUserViewModel();
vm.Role = new List<CreateUserViewModel.Item>();

foreach (var Role in query.Roles)
{
    vm.Role.Add(new CreateUserViewModel.Item
    {
        Label = Role.Label,
        RoleNumber = Role.RoleNumer
    });
}

How i can do the 'Add' to the list with Linq?

John Saunders
  • 160,644
  • 26
  • 247
  • 397
user1287678
  • 73
  • 2
  • 11

2 Answers2

6

AddRange should do it for you:

vm.Role.AddRange(query.Roles.Select(r => new CreateUserViewModel.Item
            {
                Label = r.Label,
                RoleNumber = r.RoleNumer
            }));

AddRange takes an IEnumerable parameter and adds each item to the collection.

Jonesopolis
  • 25,034
  • 12
  • 68
  • 112
3
vm.Role = query
          .Roles
          .Select(r=>new CreatUserViewModel
              .Item{Label = r.Label,
                    RoleNumber = r.RoleNumber})
          .ToList();
Will Jenkins
  • 9,507
  • 1
  • 27
  • 46
  • awesome, thanks - have undeleted so feel free to add as an answer and I'll accept it. http://stackoverflow.com/questions/28509321/highlight-rows-across-two-adjacent-tables-with-css – Will Jenkins Feb 14 '15 at 20:24