Reputation: 82291
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).
Upvotes: 155
Views: 161053
Reputation: 73
For everyone who is stuck with .NET 2.0, like me, try the following way (applicable to the example in the OP):
ConfigItemList.ConvertAll<string>(delegate (ConfigItemType ci)
{
return ci.Name;
}).ToArray();
where ConfigItemList is your list variable.
Upvotes: 6
Reputation: 241583
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
.
Upvotes: 22
Reputation: 66399
This should also work:
AggregateValues("hello", MyList.ConvertAll(c => c.Name).ToArray())
Upvotes: 6
Reputation: 160852
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.
Upvotes: 324