SQL转换到LINQ

时间:2013-07-30 15:07:32

标签: sql linq entity-framework-4.1

我对这句SQL语句有疑问:

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 list

我试过这个,但我不知道如何传递给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
                            };

我不太喜欢这个languange我更喜欢这种类型...

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();

感谢您提前!

2 个答案:

答案 0 :(得分: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();

答案 1 :(得分: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();
}

非常感谢你的帮助!!!