无法隐式转换类型'System.DateTime?'到'System.DateTime'

时间:2013-12-04 12:56:47

标签: sql linq datetime asp.net-web-api

我正在尝试将值分配给dtLancamentoReceitaDespesaDataVencimento,条件是:如果值dtLancamentoReceitaDespesaDataPagamento为null,则赋值dtLancamentoReceitaDespesaDataVencimento但指定dtLancamentoReceitaDespesaDataPagamento的值。 但是给出了以下错误:

无法隐式转换类型'System.DateTime?'到'System.DateTime'。存在显式转换(您是否错过了演员?)

dtLancamentoReceitaDespesaDataVencimento = 
   lancamentoReceitaDespesa.dtLancamentoReceitaDespesaDataPagamento == null ? 
   lancamentoReceitaDespesa.dtLancamentoReceitaDespesaDataVencimento : 
   lancamentoReceitaDespesa.dtLancamentoReceitaDespesaDataPagamento     

LINQ:

    public List<LancamentoReceitaDespesa> GetLancamentoReceitaDespesaByintCodigoGrupoUsuarioByParametro(int intCodigoGrupoUsuario, int mes, int ano)
    {
        return (from lancamentoReceitaDespesa in _DatabaseContext.LancamentoReceitaDespesa
                where lancamentoReceitaDespesa.intCodigoGrupoUsuario == intCodigoGrupoUsuario &&
                lancamentoReceitaDespesa.dtLancamentoReceitaDespesaDataVencimento.Month == mes &&
                lancamentoReceitaDespesa.dtLancamentoReceitaDespesaDataVencimento.Year == ano
                select new LancamentoReceitaDespesa
                {
                    intLancamentoReceitaDespesaId = lancamentoReceitaDespesa.intLancamentoReceitaDespesaId,
                    intCategoriaId = lancamentoReceitaDespesa.intCategoriaId,
                    strLancamentoReceitaDespesaCartaoCreditoContaBancaria = lancamentoReceitaDespesa.strLancamentoReceitaDespesaCartaoCreditoContaBancaria,
                    intContaContabilId = lancamentoReceitaDespesa.intContaContabilId,
                    intFormaPagamentoId = lancamentoReceitaDespesa.intFormaPagamentoId,
                    intClienteFornecedorId = lancamentoReceitaDespesa.intClienteFornecedorId,
                    intEventoId = lancamentoReceitaDespesa.intEventoId,
                    strLancamentoReceitaDespesaDescricao = lancamentoReceitaDespesa.strLancamentoReceitaDespesaDescricao,
                    strLancamentoReceitaDespesaDocumento = lancamentoReceitaDespesa.strLancamentoReceitaDespesaDocumento,
                    strLancamentoReceitaDespesaTipoLancamento = lancamentoReceitaDespesa.strLancamentoReceitaDespesaTipoLancamento,
                    dtLancamentoReceitaDespesaDataVencimento = lancamentoReceitaDespesa.dtLancamentoReceitaDespesaDataPagamento == null ? lancamentoReceitaDespesa.dtLancamentoReceitaDespesaDataVencimento : lancamentoReceitaDespesa.dtLancamentoReceitaDespesaDataPagamento,
                    decLancamentoReceitaDespesaValor = lancamentoReceitaDespesa.decLancamentoReceitaDespesaValor,
                    dtLancamentoReceitaDespesaDataPagamento = lancamentoReceitaDespesa.dtLancamentoReceitaDespesaDataPagamento,
                    decLancamentoReceitaDespesaValorPago = lancamentoReceitaDespesa.decLancamentoReceitaDespesaValorPago,
                    dtLancamentoReceitaDespesaDataRecebimento = lancamentoReceitaDespesa.dtLancamentoReceitaDespesaDataRecebimento,
                    decLancamentoReceitaDespesaValorRecebido = lancamentoReceitaDespesa.decLancamentoReceitaDespesaValorRecebido,
                    dtLancamentoReceitaDespesaDataCompra = lancamentoReceitaDespesa.dtLancamentoReceitaDespesaDataCompra,
                    intCodigoGrupoUsuario = lancamentoReceitaDespesa.intCodigoGrupoUsuario,
                    bitLancamentoReceitaDespesaPagarAutomatico = lancamentoReceitaDespesa.bitLancamentoReceitaDespesaPagarAutomatico,
                    bitLancamentoReceitaDespesaLancamentoPago = lancamentoReceitaDespesa.bitLancamentoReceitaDespesaLancamentoPago,
                    dtLancamentoReceitaDespesaDataAlteracao = lancamentoReceitaDespesa.dtLancamentoReceitaDespesaDataAlteracao,
                    dtLancamentoReceitaDespesaDataCriacao = lancamentoReceitaDespesa.dtLancamentoReceitaDespesaDataCriacao
                }).ToList();

    }

1 个答案:

答案 0 :(得分:2)

如果dtLancamentoReceitaDespesaDataVencimento属于DateTime类型,则只需在结尾添加可空类型Value选择器:

dtLancamentoReceitaDespesaDataVencimento = 
  lancamentoReceitaDespesa.dtLancamentoReceitaDespesaDataPagamento == null ? 
  lancamentoReceitaDespesa.dtLancamentoReceitaDespesaDataVencimento : 
  lancamentoReceitaDespesa.dtLancamentoReceitaDespesaDataPagamento.Value