C# 将字符串与表中的列值进行比较

C# 将字符串与表中的列值进行比较,c#,mysql,C#,Mysql,我在数据库中有一列包含电子邮件。我有一个方法,将电子邮件作为参数,我想将这个参数与数据库中的所有电子邮件进行比较,看看它是否存在。 通常我会这样做,因为邮件在一些列表中 internal bool EmailAlreadyExists(string email) { foreach(var currentEmail in someList) { if(currentEmail.Equals(email) { return false;

我在数据库中有一列包含电子邮件。我有一个方法,将电子邮件作为参数,我想将这个参数与数据库中的所有电子邮件进行比较,看看它是否存在。 通常我会这样做,因为邮件在一些列表中

internal bool EmailAlreadyExists(string email)
    {
        foreach(var currentEmail in someList) 
        {
          if(currentEmail.Equals(email) { return false; }
        }
        return true;
    }
到目前为止,我的代码如下所示:

internal bool EmailAlreadyExists(string email)
    {
        _msqlCon.Open();
        _query = "SELECT email FROM RegisteredUsers";
        _command = new MySqlCommand(_query, _msqlCon);

        foreach(var currentEmail in ???)
    }

如何从这里开始?

您可以使用DataReader从数据库中读取值

var list = new List<string>();

MySqlCommand cmd = new MySqlCommand(query, connection);

MySqlDataReader dataReader = cmd.ExecuteReader();

while (dataReader.Read())
{
    list.Add(dataReader["email"].ToString());
}

dataReader.Close();

列表将只返回与电子邮件匹配的条目。如果没有匹配项,则为空。

我认为代码更少,操作更少;此代码更好:

query = "SELECT email, isnull(count(email), 0) as NUM FROM RegisteredUsers GROUP BY email";
DataTable dt = new DataTable();
SqlDataAdapter sql = new SqlDataAdapter(query, connection);
sql.Fill(dt);

if (Int32.Parse(dt.Rows[0][1].ToString()) > 0)
    // your email is more than one or repeated
dt[0][0]
返回
电子邮件

query = "SELECT email, isnull(count(email), 0) as NUM FROM RegisteredUsers GROUP BY email";
DataTable dt = new DataTable();
SqlDataAdapter sql = new SqlDataAdapter(query, connection);
sql.Fill(dt);

if (Int32.Parse(dt.Rows[0][1].ToString()) > 0)
    // your email is more than one or repeated