迭代一个datareader,每个独特的组合发送一次电子邮件

时间:2012-08-30 20:40:22

标签: c#-4.0 iteration unique datareader

我有一个datareader,其中包含这样的列,以及通过SP填充的其他列:

ColX    ColY   ColZ 
NYC     100    200
NYC     101    200
EWR     100    200
EWR     100    200

我正在尝试迭代此结果,并执行一项操作,例如在ColX,ColY,ColZ的组合中为每个副本发送电子邮件;在上面的例子中EWR-100-200

实现这一点的有效方法是什么,因为我无法控制在C#中返回此数据的SP?

1 个答案:

答案 0 :(得分:1)

创建Hashset<string>以保存您发送电子邮件的项目的密钥。您可以通过以下方式创建密钥:

string key = ColX.ToString() + ColY.ToString() + ColZ.ToString();

所以:

var keysUsed = new Hashset<string>();
while (reader.Read())
{
    // Assuming you got the values from the columns...
    string key = ColX.ToString() + ColY.ToString() + ColZ.ToString();
    if (keysUsed.Add(key))
    {
        // send email
    }
}

如果项目已添加到keysUsed.Add,则true将返回Hashset。如果密钥已存在,则该方法将返回false