Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# linq-左外部联接,其中返回空值列表_C#_Asp.net_Linq - Fatal编程技术网

C# linq-左外部联接,其中返回空值列表

C# linq-左外部联接,其中返回空值列表,c#,asp.net,linq,C#,Asp.net,Linq,下面是完整的查询(不带where),它可以工作: public List<TipoResiduo> filtro(TipoResiduo objent) { using (var db = new DBEntities()) { var consulta = (from a in db.tb006_tipo_residuo join cr in db.tb016_c

下面是完整的查询(不带
where
),它可以工作:

public List<TipoResiduo> filtro(TipoResiduo objent)
    {
        using (var db = new DBEntities())
        {
            var consulta = (from a in db.tb006_tipo_residuo
                            join cr in db.tb016_classe_residuo on a.fk_id_classe_residuo equals cr.id into trcr
                            from classeresiduo in trcr.DefaultIfEmpty()
                            join gr in db.tb017_grupo_residuo on a.fk_id_grupo_residuo equals gr.id into trgr
                            from gruporesiduo in trgr.DefaultIfEmpty()
                            join tfg in db.tb008_tipo_fonte_geradora on a.fk_id_tipo_fonte_geradora equals tfg.id into trtfg
                            from tipofontegeradora in trtfg.DefaultIfEmpty()
                            join civig in db.tb051_categoria_ivig on a.fk_id_categoria_ivig equals civig.id into trci
                            from categoriaivig in trci.DefaultIfEmpty()
                            join icap in db.tb048_ibama_capitulo on a.fk_id_ibama_capitulo equals icap.id into tric
                            from ibamacapitulo in tric.DefaultIfEmpty()
                            join isubcap in db.tb049_ibama_subcapitulo on a.fk_id_ibama_subcapitulo equals isubcap.id into tris
                            from ibamasubcapitulo in tris.DefaultIfEmpty()
                            join ires in db.tb050_ibama_residuo on a.fk_id_ibama_residuo equals ires.id into trir
                            from ibamaresiduo in trir.DefaultIfEmpty()
                            //where a.fk_id_classe_residuo == objent.fk_id_classe_residuo
                            select new TipoResiduo()
                            {
                                id = a.id,
                                no_tipo_residuo = a.no_tipo_residuo,
                                dt_cadastro = a.dt_cadastro,
                                fk_id_classe_residuo = a.fk_id_classe_residuo,
                                fk_id_grupo_residuo = a.fk_id_grupo_residuo,
                                nu_densidade = a.nu_densidade,
                                fk_id_tipo_fonte_geradora = a.fk_id_tipo_fonte_geradora,
                                fk_id_categoria_ivig = a.fk_id_categoria_ivig,
                                fk_id_ibama_capitulo = a.fk_id_ibama_capitulo,
                                fk_id_ibama_subcapitulo = a.fk_id_ibama_subcapitulo,
                                fk_id_ibama_residuo = a.fk_id_ibama_residuo,
                                no_classe_residuo = classeresiduo == null ? String.Empty : classeresiduo.no_classe_residuo,
                                no_grupo_residuo = gruporesiduo == null ? String.Empty : gruporesiduo.no_grupo_residuo,
                                no_tipo_fonte_geradora = tipofontegeradora == null ? String.Empty : tipofontegeradora.no_tipo_fonte_geradora,
                                no_categoria_ivig = categoriaivig == null ? String.Empty : categoriaivig.no_categoria_ivig,
                                no_ibama_capitulo = ibamacapitulo == null ? String.Empty : ibamacapitulo.de_ibama_capitulo,
                                no_ibama_subcapitulo = ibamasubcapitulo == null ? String.Empty : ibamasubcapitulo.de_ibama_subcapitulo,
                                no_ibama_residuo = ibamaresiduo == null ? String.Empty : ibamaresiduo.de_ibama_residuo
                                });
            return consulta.OrderBy(a => a.no_tipo_residuo).ToList();
        }
}

我在这方面是新手,我该怎么做才能使它工作?

您没有左外连接,所以我不懂标题

如果objent.fk_id_classe_residuo为空,则会找到一个.fk_id_classe_residuo=0-并非全部

where a.fk_id_classe_residuo ==  (objent.fk_id_classe_residuo == null  ? 0 : objent.fk_id_classe_residuo)
试试这个

where objent.fk_id_classe_residuo == null 
   or a.fk_id_classe_residuo == objent.fk_id_classe_residuo 

我的头撞到墙上后,我找到了答案:

where objent.fk_id_classe_residuo == 0 ? true : classeresiduo.id == null
&& classeresiduo.id == null ? false : a.fk_id_classe_residuo == objent.fk_id_classe_residuo
问题是这个
objent.fk_id_classe_residuo
来自一个dropdownlist,当没有给出选项时,我将这个
fk_id
设置为0。嗯,要有人帮我做这件事是很困难的|


但我感谢布姆对我的关注

我想你试着说:
其中a.fk_id_classe_residuo==null | | a.fk_id_classe_residuo==objent.fk_id_classe_residuo
但我已经修好了,不管怎样我只能回答上述问题。“函数的对象以前填充了一些字段,当字段为空时,我想显示所有。”字段是对象。id\u classe\u residuo==null不会全部显示-它显示null.classeresiduo.id==null和&classeresiduo.id==null的值?虚假不起作用。任何与null的比较都返回false。您是对的,再次查看它似乎很奇怪,但不知何故,这是可行的。这同样有效,但更有意义(我认为):
where objent.fk_id_classe_residuo==0?true:objent.fk_id_classe_residuo==null和&objent.fk_id_classe_residuo==null?false:a.fk_id_classe_residuo==objent.fk_id_classe_residuo
当与null的任何比较返回false时,是否真的显式检查null并返回false更有意义?
where objent.fk_id_classe_residuo == 0 ? true : classeresiduo.id == null
&& classeresiduo.id == null ? false : a.fk_id_classe_residuo == objent.fk_id_classe_residuo