我试图包含子属性的属性,但是返回为null,即使我使用包含属性
var notas =
dtx.NFeItem.Where(n => n.Empresa.EmpresaId == empresa.EmpresaId)
.Where(n => n.NFe.ide_dEmi.Value.Year >= anoInicial)
.Where(n => n.NFe.ide_dEmi.Value.Month >= mesInicial)
.Where(n => n.NFe.ide_dEmi.Value.Year <= anoFinal)
.Where(n => n.NFe.ide_dEmi.Value.Month <= mesFinal)
.Where(n => n.NFe.ide_tpNF == "1")
.Include(n => n.NFe)
.Include(n => n.NFe.participante.Empresa)
.GroupBy(g => new { g.CST_ICMS, g.CFOP, g.aliqICMS, g.pRedBC_ICMS, g.NFe.ide_dEmi.Value.Month, g.NFe.ide_dEmi.Value.Year, g.NFe.participante })
.Select(i => new { i.Key.CFOP, CST = i.Key.CST_ICMS, pICMS = i.Key.aliqICMS, pRedBC = i.Key.pRedBC_ICMS, mes = i.Key.Month, ano = i.Key.Year, NFePart = i.Key.participante });
即使使用Include(n => n.NFe.participante.Empresa)
,该属性也会返回null
然后我做了秋天
var periodos = notas.DistinctBy(i => new { i.ano, i.mes }).Select(i => new { i.ano, i.mes }).ToList();
foreach (var periodo in periodos)
{
var notasPeriodo = notas.Where(i => i.ano == periodo.ano && i.mes == periodo.mes).ToList();
var participantes = notasPeriodo.DistinctBy(p => p.NFePart.CNPJ).Select(i => i.NFePart).ToList();
//etc.....
}
结果:
答案 0 :(得分:2)
EF忽略Include
表达式。
您可以做的是在查询投影中包含所需的属性,并依靠EF导航属性修正将它们绑定到引用它们的相应对象:
var notas = dtx.NFeItem
.Where(n => n.Empresa.EmpresaId == empresa.EmpresaId)
.Where(n => n.NFe.ide_dEmi.Value.Year >= anoInicial)
.Where(n => n.NFe.ide_dEmi.Value.Month >= mesInicial)
.Where(n => n.NFe.ide_dEmi.Value.Year <= anoFinal)
.Where(n => n.NFe.ide_dEmi.Value.Month <= mesFinal)
.Where(n => n.NFe.ide_tpNF == "1")
.GroupBy(g => new { g.CST_ICMS, g.CFOP, g.aliqICMS, g.pRedBC_ICMS, g.NFe.ide_dEmi.Value.Month, g.NFe.ide_dEmi.Value.Year, g.NFe.participante })
.Select(i => new
{
i.Key.CFOP,
CST = i.Key.CST_ICMS,
pICMS = i.Key.aliqICMS,
pRedBC = i.Key.pRedBC_ICMS,
mes = i.Key.Month,
ano = i.Key.Year,
NFePart = i.Key.participante,
// include properties:
i.Key.participante.Empresa,
});