2013-07-30 79 views
0

我有這個SQL語句的一個問題:SQL翻譯LINQ

SELECT  DOCUMENTOS.* 
FROM   DOCUMENTOS 
INNER JOIN 
         DOCUMENTOS_NOTARIOS ON DOCUMENTOS.uniCODOBJ = DOCUMENTOS_NOTARIOS.UNICODDOC 
INNER JOIN 
         NOTARIOS ON DOCUMENTOS_NOTARIOS.UNICODNOT = NOTARIOS.uniCODOBJ 
Where notarios.unicodobj = '84B11CDE-1C4B-4D0F-8C68-A54074B8D652' 

我想傳遞給LINQ的實體框架和我需要的結果爲IQueryable的名單

我試過,但我不「知道如何傳遞到IQueryable的名單,

List<DOCUMENTOS> DocumentosByNotarioList = new List<DOCUMENTOS>(); 
       var query = from d in db.DOCUMENTOS 
          join dn in db.DOCUMENTOS_NOTARIOS on d.uniCODOBJ equals dn.UNICODDOC 
          join n in db.NOTARIOS on dn.UNICODNOT equals n.uniCODOBJ 
          where n.uniCODOBJ == test 
          select new 
          { 
           d.uniCODOBJ, 
           d.strTITOL, 
           d.strNOMPRO, 
           d.strFECINI, 
           d.strFECFIN 
          }; 

我不undertand很好此的語我喜歡這種類型的...

DocumentsList = db.DOCUMENTOS 
        .Where(d => nombre == null || d.strTITOL.Contains(nombre)) 
        .Where(d => fechaIni == string.Empty || d.strFECINI.Equals(fechaIni)) 
        .Where(d => fechaFin == string.Empty || d.strFECFIN.Equals(fechaFin)) 
        .Where(d => tipoLibro == Guid.Empty || d.uniCODSER == tipoLibro) 
        .Where(d => firmaTopo == null || d.strFIRTOP == firmaTopo) 
        .OrderByDescending(d => d.datFECCER).ToList(); 

感謝您的提前!

+0

下載http://www.linqpad.net/,設置它,以便您可以運行第一個查詢。然後你可以點擊下面的標籤並查看翻譯版本('.Where()'語法)和SQL。它通常可以簡化一點,但相當不錯。 –

回答

0

假設您不能將匿名類型轉換爲DOCUMENTOS類型。只是不要做投影:

var query = from d in db.DOCUMENTOS 
      join dn in db.DOCUMENTOS_NOTARIOS on d.uniCODOBJ equals dn.UNICODDOC 
      join n in db.NOTARIOS on dn.UNICODNOT equals n.uniCODOBJ 
      where n.uniCODOBJ == test 
      select d; 

var DocumentosByNotarioList = query.ToList(); 
+0

我不太瞭解。 我有這個功能,因爲我正在與MVC和我需要這個iqueryable傳遞到視圖 – user2564914

+0

@ user2564914對不起,我不明白你 - 什麼阻止你通過這個查看?順便說一句,你爲什麼需要查詢?通過名單 –

0

我不明白很好。 我有這個功能,因爲我與MVC的工作,我需要這樣的IQueryable出於傳遞給視圖,該視圖包含一個Infragistics的網格..

public static IQueryable<DOCUMENTOS> GetDocumentosByNotario() 
      { 
       Guid test = new Guid("84B11CDE-1C4B-4D0F-8C68-A54074B8D652"); 
       netCNCEntities db = new netCNCEntities(); 
       List<DOCUMENTOS> DocumentosByNotarioList = new List<DOCUMENTOS>(); 

       var query = from d in db.DOCUMENTOS 
          join dn in db.DOCUMENTOS_NOTARIOS on d.uniCODOBJ equals dn.UNICODDOC 
          join n in db.NOTARIOS on dn.UNICODNOT equals n.uniCODOBJ 
          where n.uniCODOBJ == test 
          select d; 

       var DocumentosByNotarioList = query.ToList(); 
} 

非常感謝這個幫助!