2015-02-19 5 views
2

У меня есть следующая проблема:Список Преобразовать в список <string>

public class AwesomeClass 
{ 
    public string SomethingCool { get; set; } 
    public string SomethingUseless { get; set; } 
} 

У меня есть класс, который содержит ряд свойств, и мне нужно, чтобы преобразовать список этих классов в список строк, где string представляет свойство в классе.

List<AwesomeClass> stuff = new List<AwesomeClass>(); 

//Fill the stuff list with some tings. 

List<string> theCoolStuff = //Get only the SomethingCool property in the AwesomeClass list. 

Причина, почему мне нужно преобразовать это список строк, потому что у меня есть метод, который принимает список в качестве параметра, но свойство SomethingCool содержит данные, которые мне нужны для этого списка.

Примечание: Я мог бы использовать Еогеасп петлю в списке и заполнить список строк, но я ищу более изящным способом, возможно, LINQ может сделать это для меня?

ответ

13

Вы можете просто использовать Select:

var theCoolStuff = stuff.Select(x => x.SomethingCool).ToList(); 

Что Select делает это проекция, проецирует каждый элемент и преобразования (не преобразовывать) их в другую форму.

+5

Стоит добавить, что это на самом деле * проекция * (или отображение), а не * операция преобразования *. – haim770

+0

Отлично, спасибо. :-) –

+1

@MikeEason - Вы можете оценить ответ, приняв его. –

0
foreach (AwesomeClass member in stuff) 
{ 
    theCoolStuff.Add(member. SomethingCool) 
} 
3

Обратите внимание, что вы можете даже:

List<string> theCoolStuff = stuff.ConvertAll(x => x.SomethingCool); 

потому что List<T> имеет специальный «преобразования» метод :-)