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

时间:2014-06-18 12:50:52

标签: c# sql linq

我正在尝试更新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 的图片,但每张桌子中都有更多字段。我想,我只是在这个查询中不会使用它们。

1 个答案:

答案 0 :(得分:5)

你的意思是这样的吗?

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