首页 > 解决方案 > “参数类型不匹配”

问题描述

知道是什么原因造成的吗?它给了我一个运行时间

分组后参数类型不匹配

尽管我从未将不可为空的值分配给可空字段。

这个错误实际上没有任何可读性。我发现的所有其他帖子都有某种可以为空的字段。

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; }
    }

所有查询结果都分配给可为空的字段,我很困惑。

标签: c#linqasp.net-coreasp.net-core-mvc

解决方案


我认为这可能与您声明某些项目应该是可为空的类型有关,试试这个:

FlagIniziata = (byte)peG...应该改为FlagIniziata = (byte?)peG...

((double)peG.Sum(x => x.QtaLavorata)), //media pesata...应该((double?)peG.Sum(x => x.QtaLavorata)), //media pesata


推荐阅读