LINQ更新表1中id为表2中email匹配的列
本文关键字:email 为表 更新 id LINQ | 更新日期: 2023-09-27 18:09:13
我试图在我的电子邮件表中更新DonorID
列,设置为foreign key
,在我的Donor
表中使用DonorID
列,primary key
的值。
Donor
表保存来自捐赠者的所有不同的电子邮件地址,当它们进入我的电子邮件表时,将任何新地址添加到新行,并给出Donor
和ID
。我想更新我的电子邮件表中的每个DonorID
,目前设置为0
,以匹配我的Donor
表中相应的DonorID
。
我可以查询表以返回显示所有匹配的电子邮件地址的结果,但我无法想象更新我的电子邮件表以反映与我的Donor
表中该地址关联的新DonorID
的逻辑。
这是我到目前为止的代码…
//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();
我知道这应该很简单,但我也很简单,所以任何帮助都会很感激:)
<<p> 捐赠表/strong>DonorID | Email
---------+---------------------
1 | user1@domain.com
2 | user2@domain.com
3 | user3@domain.com
4 | user4@domain.com
5 | user5@domain.com
<<p> 邮件表/strong> DonorID | Sender
---------+---------------------
0 | user1@domain.com
0 | user2@domain.com
0 | user3@domain.com
0 | user4@domain.com
0 | user5@domain.com
只是给我的表数据当前看起来的想法。我不能发布我的DBML
的图像,但在每个表中有更多的字段。我想我不会在这个查询中使用它们。
你是说这样吗?
foreach (Email ema in query)
{
ema.DonorID = join.FirstOrDefault(j => j.Sender == ema.Sender).DID;
}