Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 4.0 在datareader上迭代,并为每个唯一的组合发送一次电子邮件_C# 4.0_Iteration_Unique_Datareader - Fatal编程技术网

C# 4.0 在datareader上迭代,并为每个唯一的组合发送一次电子邮件

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,那么实现这一点的有效方法是什么?创建一个哈希集,为您

我有一个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,那么实现这一点的有效方法是什么?

创建一个
哈希集
,为您发送电子邮件的项目保留密钥。可以通过以下方式创建关键点:

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
    }
}