我正在尝试使用LINQ来连接多个表,并检索分发方法的名称。我有一个SQL语句,我用它作为依据。
select dt.NAME
from i_doc.dbo.document as d
join i_doc.dbo.CONTACT as c
on c.DOC_ID = d.DOC_ID
join i_doc.dbo.RECIPIENT as r
on r.CONTACT_ID = c.CONTACT_ID
join i_doc.dbo.DISTRIBUTION_TYPE as dt
on dt.DISTRIBUTION_TYPE_ID = r.DISTRIBUTION_TYPE_ID
where c.CONTACT_TYPE_ID = 2
and r.DISTRIBUTION_TYPE_ID != 6
and d.DOC_ID = 28757
此特定查询返回1项。但是,我没有返回任何LINQ代码。 LINQ代码如下。
var distributionMethod = (from d in _documentEntities.DOCUMENTs
join c in _documentEntities.CONTACTs on d.DOC_ID equals c.DOC_ID
join r in _documentEntities.RECIPIENTs on c.CONTACT_ID equals r.CONTACT_ID
join dt in _documentEntities.DISTRIBUTION_TYPE on r.DISTRIBUTION_TYPE_ID equals dt.DISTRIBUTION_TYPE_ID
where c.CONTACT_ID == 2
&& r.DISTRIBUTION_TYPE_ID != 6
&& d.DOC_ID == DocID
select dt.NAME).ToList();
在尝试确定发生了什么时,我们简化了查询以测试连接是否正确,并测试了以下LINQ。
var test = (from dt in _documentEntities.DISTRIBUTION_TYPE
select dt.NAME).Take(100);
这个LINQ,var测试产生适当的值。
我的问题是:为什么我的distributionMethod LINQ查询没有返回任何内容,我该怎么做才能修复它?
谢谢
答案 0 :(得分:1)
在您的LINQ查询中,您按c.CONTACT_ID
进行过滤,但在SQL查询中,您按c.CONTACT_TYPE_ID
进行过滤,这只是简单的拼写错误。