以下是我项目中的代码示例。 DataSet存储authors first name and last name
的值,具体取决于特定的书籍ID。但是,一本书可以有很多作者。当用户在TextBoxes中键入一些值并按下保存按钮时,应启动两种方法之一。如果文本框和数据集中的值相同,则第一种方法更新数据库中的现有作者记录。如果不是 - 应该触发第二种方法,并且应该将新的作者记录添加到数据库中。
DataSet ds = GetData(queryString);
Autor autor = new Autor();
foreach (DataTable dt in ds.Tables)
{
foreach (DataRow dr in dt.Rows)
{
string firstName = dr["First_name"].ToString();
string lastName = dr["Last_name"].ToString();
if (firstName.Trim().ToUpper() == txtFirstName.Text.Trim().ToUpper() && lastName.Trim().ToUpper() == txtLastName.Text.Trim().ToUpper())
{
//updating existing author record in the database
Autor.UpdateInDatabase(autor);
}
else
{
//adding new author record in the database
Autor.AddToDatabase(autor);
break;
}
}
}
此代码仅在匹配值位于第一个数据集行中时才有效 - 这显然是错误的。谁能帮我理解如何循环数据集,比较所有结果并根据结果 - 选择正确的方法?
答案 0 :(得分:0)
只需添加一个布尔标志。
bool itemFound = false;
foreach (DataTable dt in ds.Tables)
{
foreach (DataRow dr in dt.Rows)
{
string firstName = dr["First_name"].ToString();
string lastName = dr["Last_name"].ToString();
if (firstName.Trim().ToUpper() == txtFirstName.Text.Trim().ToUpper() && lastName.Trim().ToUpper() == txtLastName.Text.Trim().ToUpper())
{
itemFound = true;
break;
}
}
}
if(itemFound)
Autor.UpdateInDatabase(autor);
else
Autor.AddToDatabase(autor);