DataTable选择不返回值

时间:2016-12-22 17:01:58

标签: c#

我有一个数据表,我试图从数据表中选择一些行 它适用于PracticeIDs 1& 37,但由于某种原因,当它到达数据的最后一行(ID 7)时,它不会从数据表中提取记录。

有什么想法吗?

        //create datatable
        DataTable dt = new DataTable();
        dt.Columns.Add("PracticeID");
        dt.Columns.Add("AuthorID");

        //add data(in real code, this is pulled from the database)
        dt.Rows.Add(1, 87);
        dt.Rows.Add(37, 202);
        dt.Rows.Add(1, 268);
        dt.Rows.Add(7, 262);

        //get distinct practiceids into datatable
        DataView dv = new DataView(dt);
        DataTable dtDistinctIDs = dv.ToTable(true, "PracticeID");

        //for each practice, get a list of the authors
        foreach (DataRow practiceRow in dtDistinctIDs.Rows)
        {

            DataRow[] dra = dt.Select("PracticeID = " + practiceRow["PracticeID"].ToString());
        }

1 个答案:

答案 0 :(得分:1)

这很难被发现,因为这种行为似乎违反直觉。您正在试验的问题是从没有数据类型的列派生的。我现在无法完全解释它,但尝试将您的代码更改为以下内容,它将按预期工作:

DataTable dt = new DataTable();
dt.Columns.Add("PracticeID",typeof(int)); //THIS IS THE IMPORTANT BIT
dt.Columns.Add("AuthorID");

//add data(in real code, this is pulled from the database)
dt.Rows.Add(1, 87);
dt.Rows.Add(37, 202);
dt.Rows.Add(1, 268);
dt.Rows.Add(7, 262);

//get distinct practiceids into datatable
DataView dv = new DataView(dt);
DataTable dtDistinctIDs = dv.ToTable(true, "PracticeID");

//for each practice, get a list of the authors
foreach (DataRow practiceRow in dtDistinctIDs.Rows)
{

    DataRow[] dra = dt.Select("PracticeID = " + (int)practiceRow["PracticeID"]);
}

修改

事实上我错了,而且更简单。真正的问题是你的Select没有'字段,因为默认情况下DataColumn是字符串。因此,使用原始代码,只需更改以下内容即可:

DataRow[] dra = dt.Select("PracticeID = '" + practiceRow["PracticeID"].ToString() + "'");