C# 4.0 在datareader上迭代,并为每个唯一的组合发送一次电子邮件
我有一个datareader,其中的列与通过SP填充的其他列类似:C# 4.0 在datareader上迭代,并为每个唯一的组合发送一次电子邮件,c#-4.0,iteration,unique,datareader,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,那么实现这一点的有效方法是什么?创建一个哈希集,为您
ColX ColY ColZ
NYC 100 200
NYC 101 200
EWR 100 200
EWR 100 200
我试图迭代这个结果,并执行一个操作,比如为ColX,ColY,ColZ组合中的每个副本发送一封电子邮件;在上述示例中,EWR-100-200
如果我无法控制以C#形式返回此数据的SP,那么实现这一点的有效方法是什么?创建一个哈希集
,为您发送电子邮件的项目保留密钥。可以通过以下方式创建关键点:
string key = ColX.ToString() + ColY.ToString() + ColZ.ToString();
因此:
var keysUsed=newhashset();
while(reader.Read())
{
//假设您从列中获取了值。。。
字符串键=ColX.ToString()+ColY.ToString()+ColZ.ToString();
如果(使用键。添加(键))
{
//发送电子邮件
}
}
这里的要点是,keysUsed.Add
将返回true
,如果该项被添加到哈希集中。如果密钥已经存在,该方法将返回false
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
}
}