【问题标题】:Converting string[] to list type<SerialNumber>将 string[] 转换为列表类型<SerialNumber>
【发布时间】:2021-01-09 13:39:13
【问题描述】:

似乎无法解决这个问题。

我有一个有属性访问修饰符的学生班级

{
    public class SerialNumbers
    {
       public string SerialNumber { get; set; }
    }
}

现在我已经访问了数据库,并将结果从数据表返回到字符串[]

string[] serialArray = dt.Rows.OfType<DataRow>().Select(k => k[1].ToString()).ToArray();

输出所需的结果。现在我试图通过 List 将结果保存到我的模型中,所以我试图将我的 string[] 转换为 SerialNumber 类型的列表,但我不断收到无效的演员表

List<SerialNumbers> serial = serialArray.Cast<SerialNumbers>().ToList();

谁能告诉我为什么这不起作用,提前谢谢。

【问题讨论】:

    标签: c# list model-view-controller collections


    【解决方案1】:

    您不能使用内置方法将字符串数组转换为自定义类型列表。我认为最简单的方法是使用 foreach 循环填充您的自定义类型列表。

    List<SerialNumbers> serial = new List<SerialNumbers>();
    foreach (var item in serialArray)
    {
        serial.Add(new SerialNumbers() {SerialNumber = item});
    }
                         
    

    【讨论】:

      【解决方案2】:

      你的 SerialNumbers 类没有办法解析字符串类型,只需在类中实现一个方法void Parse(string[]);void Parse(string); 并使用即可。

      【讨论】:

      • 这不会修复查询。
      【解决方案3】:

      Cast&lt;T&gt;() 调用本质上是 (SerialNumber)item 失败,因为您的项目是字符串而不是序列号。

      你需要一个来自字符串的投影,就像

      List<SerialNumbers> serial = serialArray.Select(s => new SerialNumbers { SerialNumber = s }).ToList();
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-05-09
        • 1970-01-01
        • 2017-01-29
        • 2016-09-27
        • 2018-04-09
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多