在进行左连接时未填充对象

时间:2014-09-15 11:57:05

标签: c# linq linq-to-dataset

当进行左连接时,MO对象未填充,我有一个复合键,其中第二个数据表这些键可能不存在,有人可以帮我吗?

var query = (from GrupoInicial in dtGroupInicial.AsEnumerable()
                         join SomaMedicao in dtSomaMedicao.AsEnumerable() on new { num_contrato = GrupoInicial["num_contrato"], num_servico = GrupoInicial["num_servico"] } equals new { num_contrato = SomaMedicao["num_contrato"], num_servico = SomaMedicao["num_servico"] } into SomaMedicao
                         from SM in SomaMedicao.DefaultIfEmpty()
                         join MOrcado in material_orcado.AsEnumerable() on new { num_contrato = GrupoInicial["num_contrato"], num_servico = GrupoInicial["num_servico"] } equals new { num_contrato = MOrcado["num_contrato"], num_servico = MOrcado["num_servico"] } into MaterialOrcado
                         from MO in MaterialOrcado.DefaultIfEmpty() // Here obeto is not populated
                         select new
                         {
                             num_contrato = GrupoInicial["num_contrato"] != null ? GrupoInicial["num_contrato"].ToString() : null,
                             num_servico = GrupoInicial["num_servico"] != null ? GrupoInicial["num_servico"].ToString() : null,
                             escritorio = GrupoInicial["escritorio"] != null ? GrupoInicial["escritorio"].ToString() : null,
                             area_telefonica = GrupoInicial["area_telefonica"] != null ? GrupoInicial["area_telefonica"].ToString() : null,
                             servico_tipo = GrupoInicial["servico_tipo"] != null ? GrupoInicial["servico_tipo"].ToString() : null,
                             servico_subtipo = GrupoInicial["servico_subtipo"] != null ? GrupoInicial["servico_subtipo"].ToString() : null,
                             data_geracao = GrupoInicial["data_geracao"] != null ? GrupoInicial["data_geracao"].ToString() : null,
                             ordem_interna = GrupoInicial["ordem_interna"] != null ? GrupoInicial["ordem_interna"].ToString() : null,
                             boletim_anormalidade = GrupoInicial["boletim_anormalidade"] != null ? GrupoInicial["boletim_anormalidade"].ToString() : null,
                             plano_trabalho = GrupoInicial["plano_trabalho"] != null ? GrupoInicial["plano_trabalho"].ToString() : null,
                             aep_num = GrupoInicial["aep_num"] != null ? GrupoInicial["aep_num"].ToString() : null,
                             aep_inicio = GrupoInicial["aep_inicio"] != null ? GrupoInicial["aep_inicio"].ToString() : null,
                             aep_fim = GrupoInicial["aep_fim"] != null ? GrupoInicial["aep_fim"].ToString() : null,
                             aep_comeco = GrupoInicial["aep_comeco"] != null ? GrupoInicial["aep_comeco"].ToString() : null,
                             aep_conclusao = GrupoInicial["aep_conclusao"] != null ? GrupoInicial["aep_conclusao"].ToString() : null,
                             medicao_num = SM["medicao_num"] != null ? SM["medicao_num"].ToString() : null,
                             medicao_data_criacao = GrupoInicial["medicao_data_criacao"] != null ? GrupoInicial["medicao_data_criacao"].ToString() : null,
                             medicao_valor = SM["medicao_valor"] != null ? SM["medicao_valor"].ToString() : null,
                             medicao_acesso_atividade = GrupoInicial["medicao_acesso_atividade"] != null ? GrupoInicial["medicao_acesso_atividade"].ToString() : null,
                             medicao_data_classificacao = GrupoInicial["medicao_data_classificacao"] != null ? GrupoInicial["medicao_data_classificacao"].ToString() : null,
                             cod_atividade = GrupoInicial["cod_atividade"] != null ? GrupoInicial["cod_atividade"].ToString() : null,
                             atividade_quant_medida = GrupoInicial["atividade_quant_medida"] != null ? GrupoInicial["atividade_quant_medida"].ToString() : null,
                             material_orcado = (MO == null) ? "NULL" : MO["material_orcado"].ToString(),
                             quantidade_orcado = (MO == null) ? "NULL" : MO["quant_material_orcado"].ToString()
                         });

DataTable dtValorTotal = query.ToDataTable();

0 个答案:

没有答案