Создать список только с одним членом класса

У меня есть список этого класса:

public class Data
{
   public string name {get; set;}
   public int width {get; set;}
}

И я хочу создать метод, который возвращает список только свойства name. Вот так:

public List<string> GetAllNames()
{ return MyDataList<name>.ToList(); }

Итак, если у меня есть этот список:

  • name= Jon - width= 10
  • name= Jack - width= 25

Мне нужен следующий список:

  • name= Jon
  • name= Jack

Возможно ли это?

Ответ 1

Используйте LINQ:

public List<string> GetAllNames()
{
    return MyDataList.Select(i => i.name).ToList();
}

Ответ 2

Если вы используете .NET 3.5 (VS2008) или позже, используйте методы расширения:

public class Data { String Name; Int32 Width; }
public List<Data> MyData = new List<Data>();

public static IEnumerable<String> GetNames(this List<Data> data) {
    foreach(Data d in data) yield return d.Name;
}
// or use Linq to return a concrete List<String> implementation rather than IEnumerable.

Ответ 3

public List<string> GetAllNames()
{ 
    return myDataList.Select(item => item.name).ToList();
}