将数组转换为字符串循环问题

时间:2012-08-28 18:58:27

标签: c# .net

我有一个foreach循环,即向数组添加电子邮件地址。最后,我加入数组并将其推入一个字符串。

当数据库中的某个人有一个空白的电子邮件地址时,我有一个问题就是弄乱了我的逻辑。有人可以帮我解决这个问题吗?

TestGuy1: 
TestGuy2: 2@2.com
TestGuy3: 3@3.com

通过上述信息,它创建了一个3长度数组,然后将其转换为如下字符串:

sEmailList  "2@2.com,3@3.com,"  string

代码:

DataTable GetUserReportsToChain = objEmployee.GetUserReportsToChain(LoginID, ConfigurationManager.AppSettings.Get("Connection").ToString());

int RowCount = GetUserReportsToChain.Rows.Count;
string[] aEmailList = new string[RowCount];
int iCounter = 0;
foreach (DataRow rRow in GetUserReportsToChain.Rows)
{
    if (rRow["usrEmailAddress"].ToString() != "")
    {
        aEmailList[iCounter] = rRow["usrEmailAddress"].ToString();
        iCounter++;
        //String email = rRow["usrEmailAddress"].ToString(); 
    }
}

string sEmailList = String.Join(",", aEmailList);

当数据库的电子邮件空白值时,我知道如何解决这个问题吗?

5 个答案:

答案 0 :(得分:4)

您想使用List<string>而不是固定大小的数组。或者返回非空字符串的简单LINQ查询。

List<string> aEmailList = new List<string>();
foreach (DataRow rRow in GetUserReportsToChain.Rows)
{
    if (!String.IsNullOrEmpty(rRow["usrEmailAddress"].ToString()))
    {
        aEmailList.Add(rRow["usrEmailAddress"].ToString());
    }
}
string sEmailList = String.Join(",", aEmailList);

答案 1 :(得分:4)

一体化

var sEmailList = String.Join(",", 
      GetUserReportsToChain.Rows
      .Cast<DataRow>()
      .Select(m => m["usrEmailAddress"].ToString())
      .Where(x => !string.IsNullOrWhiteSpace(x)));

答案 2 :(得分:2)

你可以试试

String.Join(",", aEmailList.Where(s => !string.IsNullOrEmpty(s)));

答案 3 :(得分:2)

您可以将if语句更改为:

if(!string.IsNullOrEmpty(rRow["usrEmailAddress"].ToString().Trim())

答案 4 :(得分:0)

如果您使用的是3.0或更高版本:

String.Join(",", aEmailList.Where(s => s.Trim() != ""));