c# - 防止C#中的重复字符串

标签 c#

我的代码中有一个字符串,它连接数据库中各个表的电子邮件地址,然后显示在 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() + ";";
    }
}

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

还有另一个代码可以从另一个表中检索.. \并且该字符串是由 ; 分隔的电子邮件列表分号

最佳答案

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

否则,您可以将所有电子邮件地址添加到一个 HashSet 中,它会自动为您过滤掉重复项。

重新编写代码:

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

关于c# - 防止C#中的重复字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1756761/

相关文章:

c# - '1' 的无效参数值对 'index' 无效

c# - 使用 SharePoint Lists.asmx GetListItems 按名称搜索文档

c# - Azure 存储容器(通用 v2)告诉我无法从代码中标记 blob

c# - 使用哪种线程类型,正确停止/中止?

c# - 如何将对象附加到 URL

c# - 清除 Crystal Reports ReportDocument 对象使用的资源的最佳方法是什么?

java.lang.ClassCastException : java. util.Vector 无法转换为 org.ksoap2.serialization.SoapPrimitive

c# - 在 .NET Core Worker Service 中执行健康检查

c# - 关于 AsyncCallback 和 IAsyncResult 模式的两个问题

c# - .net 核心控制台应用程序作为 Windows 服务-是否可以在不使用 Kill() 方法的情况下安全地终止已启动进程的执行?