Convert a list of objects to an array of one of the object's properties
Say I have the following class:
public class ConfigItemType
{
public string Name { get; set; }
public double SomeOtherThing { get; set; }
}
and then I make a list of the following classes (List<ConfigItemType> MyList
)
Now I have a method with the following signature:
void AggregateValues(string someUnrelatedValue, params string[] listGoesHere)
How can I fit MyList
in to the listGoesHere
using the value in ConfigItemType.Name
as the params string array?
I am fairly sure that Linq can do this.... but MyList
does not have a select
method on it (which is what I would have used).
You are looking for
MyList.Select(x=>x.Name).ToArray();
Since Select
is an Extension method make sure to add that namespace by adding a
using System.Linq
to your file - then it will show up with Intellisense.
I am fairly sure that Linq can do this.... but MyList does not have a select method on it (which is what I would have used).
Yes, LINQ can do this. It's simply:
MyList.Select(x => x.Name).ToArray();
Most likely the issue is that you either don't have a reference to System.Core
, or you are missing an using
directive for System.Linq
.
This should also work:
AggregateValues("hello", MyList.ConvertAll(c => c.Name).ToArray())