如何检查数据集中是否存在文本框中的值

本文关键字:文本 存在 是否 集中 数据集 何检查 检查 数据 | 更新日期: 2023-09-27 18:02:53

这是我项目中的代码示例。数据集根据特定的图书id存储authors first name and last name的值。然而,一本书可以有很多作者。当用户在文本框中输入一些值并按下保存按钮时,应该启动两个方法中的一个。第一个方法更新数据库中现有的作者记录,如果文本框和数据集的值相同。如果没有,第二个方法应该被触发,新的作者记录应该添加到数据库中。

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;                
      }
    }
}

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

如何检查数据集中是否存在文本框中的值

只需添加一个布尔标志。

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