0

List クラスから C# グリッドビューに変数を渡しています。int 値を返すデータベース列を含める場合を除いて、すべてうまくいっています。結果セットの列の値をリストに渡すにはどうすればよいですか? エラーの原因となっている列は「ローカル」変数です。

public class shuffleDataList
{
    public string directLine { get; set; }
    public int local { get; set; }
    public string employeeNumber { get; set; }
}


        List<shuffleDataList> callList = new List<shuffleDataList>();

            if (rdr != null)
            {
                if (rdr.HasRows)
                { 
                    while (rdr.Read())
                    {   
                        callList.Add(new shuffleDataList()
                        {
                            directLine = rdr.IsDBNull(0) ? null : rdr.GetString(0),
                            local = rdr.IsDBNull(1) ? 0 : rdr.GetInt32(1),
                            employeeNumber = rdr.IsDBNull(2) ? null : rdr.GetString(2),
                        });
                    }
                }

コードは次を返します。

「指定されたキャストは無効です。」

私はすでに GetInt32 を試しましたが(上記のコードに従って)、まだ問題を解決していません。繰り返しますが、結果セットの列の int 値をリストに渡すにはどうすればよいですか? 事前にどうもありがとうございました。

4

2 に答える 2

1

数値データを db テーブル列から C# リストに渡すという以前のジレンマを解決しました

これを使用する代わりに:

local = rdr.IsDBNull(1) ? 0 : rdr.GetInt32(1),

代わりにこれを実験して使用しました:

local = rdr.IsDBNull(1) ? 0 : Convert.ToInt32(rdr.GetValue(1)),

私の問題を解決しようとしたすべての人に感謝します。

于 2013-10-01T07:08:23.000 に答える
0

これはうまくいくはずです:

...
local = rdr.IsDBNull(1) ? 0 : Parse(rdr.GetString(1)).GetValueOrDefault(0),
...

static int? Parse(string value)
{
    int result;

    if (int.TryParse(value, out result))
    {
        return result;
    }

    return null;
}
于 2013-09-30T11:52:13.503 に答える