如何检查DataSet中是否存在TextBox的值?

时间:2016-08-17 18:59:52

标签: c# asp.net visual-studio-2015

以下是我项目中的代码示例。 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;                
      }
    }
}

此代码仅在匹配值位于第一个数据集行中时才有效 - 这显然是错误的。谁能帮我理解如何循环数据集,比较所有结果并根据结果 - 选择正确的方法?

1 个答案:

答案 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);