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
  • 441
  • 6
  • 10
Sreejesh Kumar
  • 2,369
  • 12
  • 50
  • 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
  • 128,537
  • 12
  • 134
  • 188
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,329
  • 15
  • 44
  • 69
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,149
  • 5
  • 35
  • 51