这是我的查询的摘录:
...
join p in dc.PODs on c.ID equals p.Consignment into pg
from pgg in pg.DefaultIfEmpty()
...
查询应该做的是获取与寄售 cargo 关联的所有“POD”,将其存储为 IEnumerable 对象(这似乎有效),这样我就可以在查询从查询生成的主要 IEnumerable 时运行它。
问题是,我得到了带有 DefaultIfEmpty 行的重复主行,只有当一行有多个 POD 时才会发生这种情况 - 所以它为每个 POD 返回一行,这是不正确的。如果我删除 pg.DefaultIfEmpty() 行,它似乎会好一点,但我仍然想获取没有 POD 的行。
有什么想法吗?
最佳答案
只是想确认您的第二种情况,输出不会没有没有项目的二、四、五,因为它不是外部联接?
One
1 TextBox
Three
3 Refridgerator
3 Bucket
我尝试的是对 dc.PODS 使用等效的 WHERE IN。
....join appraisal in ef_appraisal on application.a_appraisalid equals appraisal.a_appraisalid<br/>
where<br/>
(from r in ..<br/>
select r.r_applicationid).Contains(application.a_id) )
如果你有其他想法,请分享
关于c# - LINQ-to-SQL 连接中的 DefaultIfEmpty 导致重复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6611957/