错误“无法将类型为'System.Int32'的对象转换为类型为'System.Collections.Generic.List`1 [System.Int32]'”

Csh*_*arp 4 c# asp.net generics collections

我有一个包裹递送应用程序,下面的代码中出现错误:

public class DeliveryDriver
{
    public List<int> DriverID { get; set; }
    public List<string> DriverName { get; set; }
}

var IDeliveryDriver = new List<DeliveryDriver>();

foreach (DataRow dr in dsDriverID.Tables[0].Rows)
{
    IDeliveryDriver.Add(new DeliveryDriver
    {
        DriverID = (List<int>)dr["DriverId"],
        DriverName = (List<string>)dr["DriverName"]
    });
}
Run Code Online (Sandbox Code Playgroud)

错误发生在该IDeliveryDriver.Add行,并进入catch块。错误是:

无法将类型为“ System.Int32”的对象转换为类型为“ System.Collections.Generic.List`1 [System.Int32]”

是什么导致错误?

Jon*_*eet 5

错误消息说明了一切- DriverId每行中的字段是一个int,而不是一个List<int>。同为DriverName一个string,而不是一个List<string>。您应该将DriverIdDriverName属性分别更改为intstring,然后也强制转换为正确的类型:

public class DeliveryDriver
{
    public int DriverID { get; set; }
    public string DriverName { get; set; }
}

...

foreach (DataRow dr in dsDriverID.Tables[0].Rows)
{
    IDeliveryDriver.Add(new DeliveryDriver
    {
        DriverID = (int) dr["DriverId"],
        DriverName = (string) dr["DriverName"]
    });
}
Run Code Online (Sandbox Code Playgroud)

毕竟,每个送货司机只有一个名字和一个ID,不是吗?