我有一个数据表,我试图从数据表中选择一些行 它适用于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());
}
答案 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() + "'");