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
。
答案 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属性添加了一个新条件,这应该正确返回。