我有一个包裹递送应用程序,我在下面的代码中收到错误:
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"]
});
}
错误发生在IDeliveryDriver.Add
行,它进入了一个catch块。错误是:
无法将“System.Int32”类型的对象强制转换为类型 'System.Collections.Generic.List`1 [System.Int32]'
导致错误的原因是什么?
答案 0 :(得分:4)
错误消息显示全部 - 每行中的DriverId
字段为int
,而不是List<int>
。同上DriverName
为string
,而不是List<string>
。您应该将DriverId
和DriverName
属性分别更改为int
和string
,然后再将其转换为正确的类型:
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"]
});
}
毕竟,每个送货司机只有一个名字和一个身份证,不是吗?