我有一个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);
当数据库的电子邮件空白值时,我知道如何解决这个问题吗?
答案 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() != ""));