Sreejesh Kumar
Sreejesh Kumar

Reputation: 2499

Select multiple columns in LINQ

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.

Upvotes: 3

Views: 7837

Answers (3)

Manatherin
Manatherin

Reputation: 4187

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();

Upvotes: 2

XN16
XN16

Reputation: 5869

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();

Upvotes: 2

Jamiec
Jamiec

Reputation: 136074

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();

Upvotes: 12

Related Questions