3

I've written a LINQ query shown below :

List<Actions> actions = resourceActions.Actions.Select(s => s.ActionName).ToList();

How do I give for selecting multiple columns here ? ie I want to add columns s.ActionId and s.IsActive. I'm unable to apply it.

Asef Hossini
  • 655
  • 8
  • 11
Sreejesh Kumar
  • 2,449
  • 12
  • 51
  • 72

3 Answers3

12

Make a class to represent the data you want:

public class ResourceAction
{
   public int Id {get;set;}
   public string Name {get; set; }
}

Select a list of those instead:

List<ResourceAction> actions = resourceActions.Actions
  .Select(s => new ResourceAction() { Id = s.Id, Name = s.ActionName}).ToList();
Jamiec
  • 133,658
  • 13
  • 134
  • 193
2

I believe this is what your looking for. However you need to change the output to an anonymous type.

var actions = resourceActions.Actions.Select(s => new { s.ActionName, s.ActionId, s.IsActive } ).ToList();
XN16
  • 5,679
  • 15
  • 48
  • 72
2

You can use a anonymous type for this, for example

var actions = resourceActions.Actions.Select(s => 
    new { Id = s.Id, Name = s.ActionName, Active = s.IsActive).ToList();

but a better way would be to create a class like

public class ActionWithId
{
   public int Id { get; set; }
   public string Name { get; set; }
   public bool Active { get; set; }
}

List<ActionWithId> actions = resourceActions.Actions.Select(s => 
    new ActionWithId() { Id = s.Id, Name = s.ActionName, Active = s.IsActive }).ToList();
Manatherin
  • 4,169
  • 5
  • 36
  • 52