0

我将变量从 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 值传递到列表中?非常感谢您提前。

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 回答