2016-10-06 78 views
0

我想使用LINQ連接多個表,並檢索分配方法的名稱。我有一個SQL語句,我用它作爲基礎,如下所示。LINQ加入多個表 - 沒有結果

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篩選,所以這只是簡單的拼寫錯誤。

+0

如果這是一個錯字,你不應該投票結束而不是給出答案嗎? – juharr

+0

是的,經過探索可能的密切原因,我發現可能無助於未來讀者的拼寫錯誤必須關閉,因此投了贊成票。 – Evk