2016-10-06 20 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 testは、適切な値になります。

私のdistributionMethod LINQクエリで何も返されないのはなぜですか?それを修正するには何ができますか?

あなたはc.CONTACT_IDでフィルタあなたのLINQクエリではあなたに

+0

まあ、それは私を馬鹿に感じさせます.....私の特定の問題に対する答えが信用できるようにしたいのであれば、答えを含めて自由に感じてください。ありがとうございます –

答えて

1

ありがとう、それは単純なタイプミスですので、SQLクエリでは、あなたは、c.CONTACT_TYPE_IDでフィルタリング。

+0

答えが返ってくるのではなく、閉じるために投票してはいけません。 – juharr

+0

はい、可能な近い理由を調べた後、私は、将来の読者が閉鎖されなければならないかもしれないタイプミスがそのために投票されているのを見ています。 – Evk

関連する問題