【问题标题】:convert generic list to string list [closed]将通用列表转换为字符串列表 [关闭]
【发布时间】:2014-07-15 18:16:33
【问题描述】:

有没有办法将通用列表转换为列表...我尝试过这样但出现异常...请帮助

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; }
}

【问题讨论】:

  • 你的代码有各种问题。这甚至不会编译,所以你不会得到异常。请包含一个简短但完整的程序来说明问题。伪代码是不够的。
  • List&lt;string&gt; str = new List&lt;string&gt;(); 预先创建一个新列表是多余的,因为.ToList() 会创建一个新列表并且不会填充现有列表。

标签: c# string list generics casting


【解决方案1】:

您需要的是投影,而不是演员表。那是因为您的 example 类不能转换为 string。在 LINQ 中,投影是通过Select 方法完成的:

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

【讨论】:

  • 我认为它只会返回列表中的“名称”...如果我想要完整的模型怎么办??
【解决方案2】:

或者好的旧方法(.NET 2.0):

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

【讨论】:

    【解决方案3】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-08-17
      • 2021-02-17
      • 1970-01-01
      • 1970-01-01
      • 2022-01-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多