gpt4 book ai didi

c# - LINQ 更新表 1 中的列与表 2 中电子邮件匹配的 id?

转载 作者:行者123 更新时间:2023-12-01 18:50:51 24 4
gpt4 key购买 nike

我正在尝试更新DonorID列,设置为foreign key ,在我的电子邮件表中,值为 DonorID列,primary key ,在我的Donor table 。

Donor表保存来自捐赠者的所有不同的电子邮件地址,当它们进入我的电子邮件表时将任何新地址添加到新行,并给出 Donor一个ID 。我想更新每个DonorID在我的电子邮件表中,当前设置为 0 ,匹配相应的DonorID来 self 的Donor table 。

我可以查询表以返回显示所有匹配电子邮件地址的结果,但我无法弄清楚更新我的电子邮件表以反射(reflect)新的 DonorID 的逻辑与我的 Donor 中的该地址相关联 table 。

这是我到目前为止的代码...

        //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

只是为了了解我的表数据当前的外观。我无法发布我的 DBML 的图像但每个表中的字段较多。我想我不会在这个查询中使用它们。

最佳答案

你的意思是这样的吗?

foreach (Email ema in query)
{
ema.DonorID = join.FirstOrDefault(j => j.Sender == ema.Sender).DID;
}

关于c# - LINQ 更新表 1 中的列与表 2 中电子邮件匹配的 id?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24286076/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com