使用lambda加入2表并更新模型

时间:2017-01-20 07:12:59

标签: c# sql-server-2008 lambda entity-framework-6

  var list = oSIM.Issues.Join(db.IssueTracker_Read,
  c => c.IssueId,
   o => o.issueid,
  (c, o) => new
  {
    c.read = o.issueid==null?false:true;
  });

这是一些不起作用的伪代码,但应该传达我的要求。

问题实体的类型为Issue,其中包含许多字段。如果Issue.Read记录中存在关联记录,我想将IssueTracker_Read更新为true。

返回的集合应该是列表,但要根据链接记录更新list[x].read

1 个答案:

答案 0 :(得分:0)

您可以尝试这样的事情:

var list = oSIM.Issues.GroupJoin(db.IssueTracker_Read,
 c => c.IssueId,
 o => o.issueid,
 (c, o) => new
 {
    Issue = c,
    IssueRead = o.DefaultIfEmpty()
 }).Select(groupJoinInfo=> new { 
       groupJoinInfo.Issue,
       Read = groupJoinInfo.IssueRead != null && groupJoinInfo.IssueRead.Any()
     });

然后,您可以遍历返回的集合,并使用匿名对象的新Read属性更新问题。

GroupJoin在表之间执行左连接。

修改

添加了遗漏new,感谢user2520306。

修改2

为Read属性添加了一个新条件,这应该正确返回。