2013-03-15 5 views
1

У меня есть 2 списка, содержащие адреса электронной почты. Я присоединяюсь к ним, используя объединение списка, чтобы получить окончательный список адресов электронной почты, однако иногда один из списков может быть пустым. Что происходит, когда список пуст, он добавляет его в окончательный список как «» после объединения, что приводит к сбою электронной почты .Send() на пустой адрес электронной почты. Как я могу сказать, что объединение игнорирует пустые значения? Вот что у меня естьC# Список Союзов с пустыми значениями

List<string> _RecordOwnerEmailList = new List<string>(); 

List<string> _SubmissionEmailList = new List<string>(); 
List<string> _EmailList = new List<string>(); 

string _RecordOwnerEmails = String.Empty; 
string _SubmissionEmails = String.Empty; 

if (dsRecordOwner.Tables[0].Rows.Count > 0 && !String.IsNullOrEmpty(dsRecordOwner.Tables[0].Rows[0]["UpdateEmail"].ToString())) 
    _RecordOwnerEmails = dsRecordOwner.Tables[0].Rows[0]["UpdateEmail"].ToString().Replace(" ", ""); 

if (this.ID > 0) 
    _RecordOwnerEmailList = new List<string>(_RecordOwnerEmails.Replace(" ", "").Split(';').ToList()); 

if (dsEmails.Tables[0].Rows.Count > 0 && !String.IsNullOrEmpty(dsEmails.Tables[0].Rows[0]["Emails"].ToString())) 
    _SubmissionEmails = dsEmails.Tables[0].Rows[0]["emails"].ToString().Replace(" ", ""); 

_SubmissionEmailList = new List<string>(_SubmissionEmails.Replace(" ", "").Split(';').ToList()); 

_EmailList = _RecordOwnerEmailList.Union(_SubmissionEmailList).ToList(); 

string[] emails = _EmailList.ToArray(); 

foreach (string emailAddress in emails) 
{ 
    //send email 
} 
+1

Зачем переводить список в массив? Вы можете так же легко перебирать список. –

+1

Пожалуйста, отформатируйте свой код более читабельно в будущем. На данный момент это очень трудно прочитать. (Я бы также настоятельно советовал более короткие строки, больше заявлений с объяснительными локальными переменными и фигурные скобки в каждом 'if', но это для вашего * реального * кода, а не только SO.) –

+0

код был предварительно записан, чтобы взять массив, Я просто изменил исходное содержимое массива списками. Извините за форматирование, я буду смотреть это в будущем. –

ответ

3

Фильтр эти пустые значения из с Where п

_EmailList = _RecordOwnerEmailList 
    .Union(_SubmissionEmailList) 
    .Where(address => !String.IsNullOrEmpty(address)) 
    .ToList(); 
0

(_RecordOwnerEmails + ";" + _ SubmissionEmails) .split (новые [] { ';'}, StringSplitOptions. RemoveEmptyEntries) .ToList()

Смежные вопросы