IEnumerable в строку из базы данных - PullRequest
0 голосов
/ 02 сентября 2018

В следующем коде я иду и получаю данные из базы данных. Но когда я повторяю действие, он добавляет еще одну строку с той же информацией снова.
На самом деле не понял, как мне этого избежать. Поэтому я надеюсь, что кто-нибудь может дать мне пример того, как я могу сделать это по-другому.

Функция нажатия кнопки

private void btnSteg2_Click(object sender, EventArgs e)
{
    getData();
    mails.AddRange(DataProvider.GetMail());
    agents.AddRange(DataProvider.GetAgentsView());


    //Body
    var body = from template in mails
               where template.Template == "Steg 1"
               select template.Body;
   strBody = String.Join("", body);

    //Subject
    var subj = from template in mails
               where template.Template == "Steg 1"
               select template.Subject;
   strSub = String.Join("", subj);

    var agentNr = from FullName in agents
                  where FullName.FullName == agentId
                  select FullName.FixedNr;
    strAgentNr = String.Join("", agentNr);


    strBody = strBody.Replace("[ddate]", dateId);
    strBody = strBody.Replace("[agent]", agentId);
    strBody = strBody.Replace("[agentnr]", strAgentNr);


    strSub = strSub.Replace("[ftgnamn]", ftgId);
    strSub = strSub.Replace("[orgnr]", orgId);
    strSub = strSub.Replace("[caseid]", caseId);

    //Send_Email_Outlook(string _recipient, string _message, string _subject, string _cc, string _bcc, string accountname)
    Mail.Send_Email_Outlook(kpmail, strBody, strSub, "", "", "");
    strAgentNr = String.Empty;
    strBody = String.Empty;
    strSub = String.Empty;
}

Пример того, как я получаю данные.

  public class MailItem : EntityDB, INotifyPropertyChanged
    {
        private const string TableName = "MAILTEMPLATE";
        private static SchemaJS Schema = null;

        public event PropertyChangedEventHandler PropertyChanged;

        public MailItem()
        {
            InitializeNew();
        }

        public MailItem(DataRowJS DRow)
        {
            base.DRow = DRow;
            base.DRow.Schema.TableName = TableName;
        }


        public string Template
        {
            get { return DRow.ToStr("TEMPLATE"); }
            set
            {
                DRow["TEMPLATE"] = value;
                NotifyPropertyChanged("Template");
            }
        }
        public string Subject
        {
            get { return DRow.ToStr("SUBJECT"); }
            set
            {
                DRow["SUBJECT"] = value;
                NotifyPropertyChanged("Subject");
            }
        }
        public string Body
        {
            get { return DRow.ToStr("BODY"); }
            set
            {
                DRow["BODY"] = value;
                NotifyPropertyChanged("Body");
            }
        }

Сначала я подумал, что мог бы использовать strBody = String.Empty;, чтобы очистить строку и избежать ее, чтобы она не увеличивалась с другим телом для письма после каждого нажатия кнопки. Причина для String.Join в том, что я не нашел другую способ получить его в строку.

Я немного застрял и ценю любую помощь. Надеюсь, что приведенной выше информации достаточно, чтобы понять мою проблему.

EDIT

Решил проблему, не вызывая mails.AddRange снова и снова. И body.First(); был лучшим выбором, как отметил Камило Теревинто.

...