LINQ更新表1中id为表2中email匹配的列

本文关键字:email 为表 更新 id LINQ | 更新日期: 2023-09-27 18:09:13

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

Donor表保存来自捐赠者的所有不同的电子邮件地址,当它们进入我的电子邮件表时,将任何新地址添加到新行,并给出DonorID。我想更新我的电子邮件表中的每个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的图像,但在每个表中有更多的字段。我想我不会在这个查询中使用它们。

LINQ更新表1中id为表2中email匹配的列

你是说这样吗?

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