В следующем коде я иду и получаю данные из базы данных. Но когда я повторяю действие, он добавляет еще одну строку с той же информацией снова.
На самом деле не понял, как мне этого избежать. Поэтому я надеюсь, что кто-нибудь может дать мне пример того, как я могу сделать это по-другому.
Функция нажатия кнопки
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();
был лучшим выбором, как отметил Камило Теревинто.