将结果集的列int值传递到C#列表中

时间:2013-09-30 10:11:50

标签: c# list int

我将变量从List类传递给C#gridview。一切顺利,除非我包含返回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值传递到列表中?非常感谢你提前。

2 个答案:

答案 0 :(得分:1)

我已经解决了将数据数据从db表列传递到C#list

的早期难题

而不是使用它:

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

我试验并使用了它:

local = rdr.IsDBNull(1) ? 0 : Convert.ToInt32(rdr.GetValue(1)),
感谢所有试图解决我的问题的人。

答案 1 :(得分: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;
}