Ответ 1
Вы ищете
MyList.Select(x=>x.Name).ToArray();
Так как Select
- это метод расширения, обязательно добавьте это пространство имен, добавив
using System.Linq
к вашему файлу - тогда он появится с Intellisense.
Скажем, у меня есть следующий класс:
public class ConfigItemType
{
public string Name { get; set; }
public double SomeOtherThing { get; set; }
}
а затем создаю список следующих классов (List<ConfigItemType> MyList
)
Теперь у меня есть метод со следующей сигнатурой:
void AggregateValues(string someUnrelatedValue, params string[] listGoesHere)
Как я могу вставить MyList
в listGoesHere
, используя значение в ConfigItemType.Name
в качестве массива строк params?
Я уверен, что Linq может это сделать... но MyList
не имеет на нем метода select
(что я и использовал).
Вы ищете
MyList.Select(x=>x.Name).ToArray();
Так как Select
- это метод расширения, обязательно добавьте это пространство имен, добавив
using System.Linq
к вашему файлу - тогда он появится с Intellisense.
Я уверен, что Linq может это сделать... но у MyList нет метода select (это то, что я бы использовал).
Да, LINQ может это сделать. Это просто:
MyList.Select(x => x.Name).ToArray();
Скорее всего, проблема в том, что у вас либо нет ссылки на System.Core
, либо отсутствует директива using
для System.Linq
.
Это также должно работать:
AggregateValues("hello", MyList.ConvertAll(c => c.Name).ToArray())
Для всех, кто застрял с .NET 2.0, как и я, попробуйте следующий способ (применимый к примеру в OP):
ConfigItemList.ConvertAll<string>(delegate (ConfigItemType ci)
{
return ci.Name;
}).ToArray();
где ConfigItemList - ваша переменная списка.