我正在尝试更新DonorID
列,设置为foreign key
,在我的电子邮件表格中,DonorID
列的值为primary key
,位于Donor
1}}表。
Donor
表格包含捐赠者的所有不同电子邮件地址,将新地址添加到我的电子邮件表格中的新行,并为Donor
提供ID
。我想更新当前设置为DonorID
的电子邮件表格中的每个0
,以匹配我的DonorID
表格中的相应Donor
。
我可以查询表格以返回显示所有匹配电子邮件地址的结果,但我无法计算更新电子邮件表格的逻辑,以反映与{{1}中该地址相关联的新DonorID
表。
这是我到目前为止的代码......
Donor
我知道它应该很简单,但我也很简单所以任何帮助都会受到赞赏:)
捐助者表
//join rows based on sender address
var join = from emai in db.Emails
from dono in db.Donors
where emai.Sender == dono.Email
select new{ Sender = emai.Sender, EID = emai.DonorID, DID = dono.DonorID };
gvJoin.DataSource = join;
gvJoin.DataBind();
// Query the database for the row to be updated.
var query = from ema in db.Emails
where ema.DonorID == 0
select ema;
// Execute the query, and change the column values
foreach (Email ema in query)
{
ema.DonorID = 1;
}
// Submit the changes to the database.
db.SubmitChanges();
电子邮件表
DonorID | Email
---------+---------------------
1 | user1@domain.com
2 | user2@domain.com
3 | user3@domain.com
4 | user4@domain.com
5 | user5@domain.com
只是想知道我的表数据当前的样子。我无法发布DonorID | Sender
---------+---------------------
0 | user1@domain.com
0 | user2@domain.com
0 | user3@domain.com
0 | user4@domain.com
0 | user5@domain.com
的图片,但每张桌子中都有更多字段。我想,我只是在这个查询中不会使用它们。
答案 0 :(得分:5)
你的意思是这样的吗?
foreach (Email ema in query)
{
ema.DonorID = join.FirstOrDefault(j => j.Sender == ema.Sender).DID;
}