Выполните итерацию по хранилищу данных и отправляйте электронную почту один раз для каждой уникальной комбинации
У меня есть 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
,