Выполните итерацию по хранилищу данных и отправляйте электронную почту один раз для каждой уникальной комбинации

У меня есть datareader, который имеет такие столбцы среди других столбцов, заполненных через SP:

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

Я пытаюсь перебрать этот результат и выполнить действие, такое как отправка электронного письма для каждого дубликата в комбинации ColX, ColY, ColZ; в приведенном выше примере EWR-100-200

Каков эффективный способ сделать это, учитывая, что у меня нет контроля над SP, который возвращает эти данные в C#?

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,

Другие вопросы по тегам