2013-03-15 57 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

爲什麼將列表轉換爲數組?您可以輕鬆地遍歷列表。 – 2013-03-15 17:30:35

+1

請將您的代碼格式化得更清晰。目前很難閱讀。 (我還強烈建議使用較短的行,更多的語句和解釋性局部變量,並在每個if語句中使用大括號,但這是針對* real *代碼的,而不僅僅是SO)。 – 2013-03-15 17:31:06

+0

代碼被預先寫入一個數組,我只是用列表修改了最初的數組內容。對格式化抱歉,我會在將來觀看。 – 2013-03-15 17:36:20

回答

3

篩選這些空值超出了Where條款

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

(_RecordOwnerEmails + 「」 + _ SubmissionEmails).Split(新[] { ';'},StringSplitOptions。 RemoveEmptyEntries).ToList()