C#列出具有空值的联合体

C#列出具有空值的联合体,c#,asp.net,C#,Asp.net,我有两个包含电子邮件地址的列表。我使用列表联盟加入他们,以获得最终的电子邮件列表,但有时,任何一个列表都可能是空的。当列表为空时,会在联合后将其作为“”添加到最终列表中,这会导致email.Send()在空电子邮件地址上崩溃。我如何告诉工会忽略空值?这是我的 List<string> _RecordOwnerEmailList = new List<string>(); List<string> _SubmissionEmailList = new List

我有两个包含电子邮件地址的列表。我使用列表联盟加入他们,以获得最终的电子邮件列表,但有时,任何一个列表都可能是空的。当列表为空时,会在联合后将其作为“”添加到最终列表中,这会导致email.Send()在空电子邮件地址上崩溃。我如何告诉工会忽略空值?这是我的

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
}
List\u RecordOwnerEmailList=newlist();
列表_SubmissionEmailList=新列表();
列表_EmailList=新列表();
string\u 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]。行[0][“UpdateMail”]。ToString().Replace(“,”);
如果(this.ID>0)
_RecordOwnerEmailList=新列表(_RecordOwnerEmails.Replace(“,”).Split(“;”).ToList();
if(dsEmails.Tables[0].Rows.Count>0&&!String.IsNullOrEmpty(dsEmails.Tables[0].Rows[0][“Emails”].ToString())
_SubmissionEmails=dsEmails.Tables[0]。行[0][“emails”]。ToString().Replace(“,”);
_SubmissionEmailList=新列表(_SubmissionEmails.Replace(“,”).Split(“;”).ToList();
_EmailList=_RecordOwnerEmailList.Union(_SubmissionEmailList.ToList();
字符串[]emails=_EmailList.ToArray();
foreach(电子邮件中的字符串emailAddress)
{ 
//发送电子邮件
}

使用
Where
子句过滤掉这些空值

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

(_RecordOwnerEmails+“;”+_SubmissionEmails).Split(新[]{“;”},StringSplitOptions.RemoveEmptyEntries.ToList()

为什么将列表强制转换为数组?您也可以轻松地遍历列表。请在将来更容易地格式化您的代码。现在很难读懂这个。(我还强烈建议缩短行数,增加带有解释性局部变量的语句,并在每个
if
语句中使用大括号,但这是针对实际代码的,不仅仅是这样。)代码是为了获取数组而预先编写的,我只是用列表修改了初始数组内容。很抱歉格式化了,我以后会看的。是的,第二个列表是空的,union在数组中创建了一个空值。JaredPar提供的代码仍然有效(.Where(address=>!String.IsNullOrEmpty(address)))。谢谢联合添加一个空字符串?我试着合并两个列表,其中一个是空的,但它添加了一个空字符串。请检查其中一个结果是否有空字符串。