在C#中防止重复的字符串

reg*_*gie 1 c#

我的代码中有一个字符串,用于连接数据库中各个表的电子邮件地址,然后在cc字段中显示在outlook中.

我想要的是过滤字符串,以便字符串不包含任何重复的电子邮件地址.换句话说,我不希望在输出中再次重复单个电子邮件地址.

请帮忙

DataSet ds = DatabaseFunctions.getEmailsBySPROC("getEmailByCircuit", sql_CircuitEmail);

if (ds != null)
{
    for (int idx = 0; idx < ds.Tables[0].Rows.Count; idx++)
    {
        emailList = emailList + ds.Tables[0].Rows[idx]["Email"].ToString() + ";";
    }
}
Run Code Online (Sandbox Code Playgroud)

这就是从一个表中退出的代码..

还有另一个代码从另一个表中检索.. \和字符串是电子邮件列表分开; 分号

BFr*_*ree 20

第一个也是最明显的建议是在数据库方面过滤掉它; 这意味着当从DB中检索数据时,如果可能,添加"distinct"子句,以便您只获得不同的电子邮件地址.

否则,您可以将所有电子邮件地址添加到HashSet <string>,它会自动为您过滤掉重复项.

你的代码:

DataSet ds = DatabaseFunctions.getEmailsBySPROC("getEmailByCircuit", sql_CircuitEmail);

if (ds != null)
{
    DataTable table = ds.Tables[0];
    HashSet<string> emails = new HashSet<string>();
    for (int idx = 0; idx < table.Rows.Count; idx++)
    {
        emails.Add(table.Rows[idx]["Email"].ToString());
    }
}

StringBuilder result = new StringBuilder();
foreach(string email in emails)
{
    result.Append(email + ";");
}

emailList = result.ToString();
Run Code Online (Sandbox Code Playgroud)