Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 当我将datatable传递给方法时,它将变为空_C#_Methods_Datatable - Fatal编程技术网

C# 当我将datatable传递给方法时,它将变为空

C# 当我将datatable传递给方法时,它将变为空,c#,methods,datatable,C#,Methods,Datatable,所以我有一个非常简单的函数,它遍历一个表,找到那些年龄列在2个数字之间的行,然后返回一个包含新行的新表。以下是我的功能: private DataTable AgeFinder(int MiniAge, int MaxiAge, DataTable x) { //AFWT : Analyze From Which Table int count; DataTable dtAge = new DataTable();

所以我有一个非常简单的函数,它遍历一个表,找到那些年龄列在2个数字之间的行,然后返回一个包含新行的新表。以下是我的功能:

    private DataTable AgeFinder(int MiniAge, int MaxiAge, DataTable x)
    {
        //AFWT : Analyze From Which Table

        int count;
        DataTable dtAge = new DataTable();
        dtAge = x.Clone();
        int ageMin = MiniAge;
        int ageMax = MaxiAge;
        if (ageMin > ageMax)
        {
            int temp = ageMax;
            ageMax = ageMin;
            ageMin = temp;
        }
        int ageDr;

        count = 0;
        ageDr = 0;
        dataGridView1.DataSource = x;
        foreach (DataRow dr in x.Rows)
        {
            ageDr = Convert.ToInt16(x.Rows[count]["age "]);
            if (ageDr >= ageMin && ageDr < ageMax)
            {
                dtAge.Rows.Add(dr.ItemArray);
            }
            count++;
        }
        lblCountThisQuery.Text = dtAge.Rows.Count.ToString();
        return dtAge;
    }

现在我可以看到AT不是空的,但是当我检查x(方法中的表)时,它是空的!为什么会发生这种情况?

不应该发生。完全是否有其他东西同时修改该变量?为了调试这个,您执行了哪些非常具体的步骤?现在我怀疑你在调试器中出错了。我没有调试它。我在这一行中不断得到一个错误
ageDr=Convert.ToInt16(x.Rows[count][“age”])它说“对象不能从DBNull转换为其他类型”。在将datagridview传递给方法之前,我尝试从AT填充datagridview,我看到数据在其中,但当我尝试将x传递给datagridview时…它没有显示任何表示其为空的内容<代码>“我没有调试它”
-这是你的第一个错误。调试代码<代码>“'Object不能从DBNull强制转换为其他类型”-您误解了错误消息。显然,
x
不是空的,否则会出现
NullReferenceException
<代码>x有数据。表行/列中的数据为
null
,您正试图将其转换为
Int16
。Null不能转换为数字。调试代码。
    dtAge = AgeFinder(Convert.ToInt16(tbxMinAge.Text), Convert.ToInt16(tbxMaxAge.Text), AT);
    dataGridView1.DataSource = dtAge;