将通用列表转换为字符串列表

时间:2014-07-15 18:16:34

标签: c# string list generics casting

有没有办法将通用列表转换为列表...我试过这样但是我得到了例外......请帮助

Class Demo
{
    public list<string> convert()
    {
        List<example> eg = new List<example>();
        eg.Add(new example{"Hello"});
        eg.Add(new example{"World"});
        List<string> str = new List<string>();
        str = eg.Cast<string>().ToList(); //Returns an System.InvalidCastException.
                             // Is there a way to cast a generic list to string list..
        return str;
    }
}

Class example
{
     public string name{ get; set; }
}

3 个答案:

答案 0 :(得分:2)

你需要的是投射,而不是演员。这是因为您的example课程无法投放到string。在LINQ中,投影由Select方法完成:

return eg.Select(x => x.name).ToList();

答案 1 :(得分:1)

任何List<T>都是通用列表;你想要做的是从对象列表中提取属性,而不是执行强制转换。这可以使用LINQ来完成:

str = eg.Select(x => x.name).ToList();

答案 2 :(得分:1)

或旧的方式(.NET 2.0):

foreach (var example in eg)
{
   str.Add(example.name);
}