4

パッケージ配送アプリケーションを使用していますが、以下のコードでエラーが発生します。

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]' にキャストできません

エラーの原因は何ですか?

4

1 に答える 1

5

エラー メッセージはすべてを示しています。DriverId各行のフィールドはintではなくList<int>です。ではなく であることについてDriverNameも同様です。およびプロパティをそれぞれおよびに変更してから、適切な型にもキャストする必要があります。stringList<string>DriverIdDriverNameintstring

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"]
    });
}

結局のところ、各配送ドライバーは名前と ID を 1 つずつしか持っていませんよね。

于 2013-09-30T21:35:36.953 に答える