从C#中的List <Object>获取List <String>

Nat*_*izz 0 c# linq

有没有办法从这个列表中提取颜色类型作为列表?

    public List<object1> Color1 = new List<object1>() 
    { new object1{Color=(Color)new ColorConverter().ConvertFrom("#FF016864"), Offset=0, Name="Color1"},
      new object1{Color=(Color)new ColorConverter().ConvertFrom("#FF01706B"), Offset=20, Name="Color2"},
      new object1{Color=(Color)new ColorConverter().ConvertFrom("#FF017873"), Offset=40, Name="Color3"},
      new object1{Color=(Color)new ColorConverter().ConvertFrom("#FF018781"), Offset=60, Name="Color4"},
      new object1{Color=(Color)new ColorConverter().ConvertFrom("#FF31A7A3"), Offset=80, Name="Color5"}
    };
Run Code Online (Sandbox Code Playgroud)

即我想要这个:

public List<string> ColorNames ...
Run Code Online (Sandbox Code Playgroud)

我需要我的Color1 List的字符串成员,我该怎么做?

Jon*_*eet 7

LINQ是你的朋友:

List<string> names = Color1.Select(x => x.Name).ToList();
Run Code Online (Sandbox Code Playgroud)

或使用List<T>.ConvertAll:

List<string> names = Color1.ConvertAll(x => x.Name);
Run Code Online (Sandbox Code Playgroud)

我个人更喜欢使用LINQ,因为它适用于非列表,但ConvertAll效率稍高,因为它从一开始就知道目标列表的大小.

值得进一步了解LINQ - 它是一组非常有用的数据转换技术.请参阅MSDN简介页面作为一个很好的起点.