0

配列に電子メールアドレスを追加する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);

データベースに電子メールの値が空白の場合、これを修正する方法はありますか?

4

5 に答える 5

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);
于 2012-08-28T19:02:47.753 に答える
4

オールインワン

var sEmailList = String.Join(",", 
      GetUserReportsToChain.Rows
      .Cast<DataRow>()
      .Select(m => m["usrEmailAddress"].ToString())
      .Where(x => !string.IsNullOrWhiteSpace(x)));
于 2012-08-28T19:08:04.270 に答える
2

あなたはで試すことができます

String.Join(",", aEmailList.Where(s => !string.IsNullOrEmpty(s)));
于 2012-08-28T19:03:11.410 に答える
2

ifステートメントを次のように変更できます。

if(!string.IsNullOrEmpty(rRow["usrEmailAddress"].ToString().Trim())
于 2012-08-28T19:06:25.320 に答える
0

3.0以降を使用している場合:

String.Join(",", aEmailList.Where(s => s.Trim() != ""));
于 2012-08-28T19:03:24.787 に答える