任何主意是什么原因造成的? 它给了我一个运行时
分组后参数类型不匹配
尽管我从未将不可为空的值分配给可为空的字段。
关于此错误,几乎没有任何可读性。 我发现的与此相关的所有其他帖子都有某种可为空的字段。
IList<ProgrammazioneEseguite> parzialiGruppate =
(from pe in _db.ProgrammazioneEseguite.AsNoTracking()
orderby pe.DataOraInizioLavorazione
group pe by new { pe.Azienda, pe.ComNumero,
pe.ComParte, pe.ComPosizione, pe.FaseCiclo }
into peG
where peG.Sum(x => x.QtaLavorata) > 0
select new ProgrammazioneEseguite
{
Id = (int)peG.First().Id,
Azienda = peG.Key.Azienda,
ComNumero = peG.Key.ComNumero,
ComParte = peG.Key.ComParte,
ComPosizione = peG.Key.ComPosizione,
FaseCiclo = peG.Key.FaseCiclo,
CodDisegno = null,
CodSubDisegno = null,
RevSubDisegno = null,
FaseCicloSub = null,
HimpiegateCad =
peG.Sum(x => Util.callcolaHimpiegateCad(x.DataOraEsecuzione, x.DataOraInizioLavorazione, x.QtaLavorata) * x.QtaLavorata) / ((double)peG.Sum(x => x.QtaLavorata)), //media pesata per pezzi
HimpiegateCadTesto = null,
HimpiegateTot = null,
HimpiegateTotTesto = null,
FlagEseguita =
peG.First().FlagEseguita, //le setto tutte insieme a 1 quando son tutte chiuse
Operatore = null,
MacchinaUsata = peG.Last().MacchinaUsata,
DataFineLavEsterna = peG.First().DataFineLavEsterna,
DataEsecuzione = null,
DataOraEsecuzione = null,
QtaLavorata = peG.Sum(x => x.QtaLavorata),
DataOraInizioLavorazione = peG.Last().DataOraInizioLavorazione,
FlagIniziata = (byte)peG.Where(x => x.FlagIniziata > 0).FirstOrDefault().FlagIniziata,
ProgrDataOraForzata = null,
AnnotazioniOperatore = null,
ColataUtilizzata = null,
OperatoreFineFase = null,
FlagAttrezzaggio = null
}
).AsNoTracking().ToList();
这是模型
public partial class ProgrammazioneEseguite
{
public int Id { get; set; }
public string Azienda { get; set; }
public int? ComNumero { get; set; }
public string ComParte { get; set; }
public string ComPosizione { get; set; }
public double FaseCiclo { get; set; }
public int? CodDisegno { get; set; }
public int? CodSubDisegno { get; set; }
public string RevSubDisegno { get; set; }
public double? FaseCicloSub { get; set; }
public double? HimpiegateCad { get; set; }
public string HimpiegateCadTesto { get; set; }
public double? HimpiegateTot { get; set; }
public string HimpiegateTotTesto { get; set; }
public byte? FlagEseguita { get; set; }
public string Operatore { get; set; }
public string MacchinaUsata { get; set; }
public DateTime? DataFineLavEsterna { get; set; }
public DateTime? DataEsecuzione { get; set; }
public DateTime? DataOraEsecuzione { get; set; }
public int? QtaLavorata { get; set; }
public DateTime? DataOraInizioLavorazione { get; set; }
public byte? FlagIniziata { get; set; }
public DateTime? ProgrDataOraForzata { get; set; }
public string AnnotazioniOperatore { get; set; }
public string ColataUtilizzata { get; set; }
public string OperatoreFineFase { get; set; }
public byte? FlagAttrezzaggio { get; set; }
}
所有查询结果都分配给可为空的字段,我很困惑。
答案 0 :(得分:0)
我认为这可能与您有关,其中某些项目应为可空类型,请尝试以下操作:
FlagIniziata = (byte)peG...
应该更改为FlagIniziata = (byte?)peG...
和
((double)peG.Sum(x => x.QtaLavorata)), //media pesata...
应该是((double?)peG.Sum(x => x.QtaLavorata)), //media pesata