2013-03-15 60 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()