C# 从DB到字符串的IEnumerable
在下面的代码中,我从数据库中获取数据。但当我重复该操作时,它会再次添加具有相同信息的另一行。C# 从DB到字符串的IEnumerable,c#,winforms,ienumerable,C#,Winforms,Ienumerable,在下面的代码中,我从数据库中获取数据。但当我重复该操作时,它会再次添加具有相同信息的另一行。 我还没弄明白怎么才能避免它。因此,我希望有人能给我一个例子,说明我如何能以不同的方式做到这一点 按钮点击功能 private void btnSteg2_Click(object sender, EventArgs e) { getData(); mails.AddRange(DataProvider.GetMail()); agents.AddRange(DataProvide
我还没弄明白怎么才能避免它。因此,我希望有人能给我一个例子,说明我如何能以不同的方式做到这一点 按钮点击功能
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");
}
}
起初我认为我可以使用strobdy=String.Empty
清除字符串并避免在每次按下按钮后,它不会随着电子邮件的另一个正文而增加。。之所以使用String.Join
,是因为我还没有找到另一种方法将其转换为字符串
我有点困了,非常感谢你的帮助。希望以上信息足以理解我的问题
编辑
通过不反复调用mails.AddRange
解决了此问题。
和
body.First()正如Camilo Terevinto指出的那样,code>是一个更好的选择。好吧,mails.AddRange(DataProvider.GetMail())代码>将继续添加获得的项目。如果您不希望重复,请使用mail=DataProvider.GetMail()
而不是获取字符串,我很确定您正在查找strobdy=body.First()
。你可能想读书