When executing the following query, I get the error:
The specified cast from a materialized 'System.Int32' type to the
'System.Double' type is not valid.
var data = ctx.tblTO
.Where(m => m.Id == Id)
.GroupBy(m => m.EmployeeId)
.Select(m => new
{
workDay = m.Sum(k => k.WorkDay),
onDutyDay = m.Sum(k => k.OnDutyDay),
holiDay = m.Sum(k => k.Holiday)
})
.FirstOrDefault();
The datatype of WorkDay
, OnDutyDay
and Holiday
is double
. There is no Int32
here, so why do I get this error?
How can I solve this error?
public class TO
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
public int EmployeeId { get; set; }
public double WorkDay { get; set; }
public double OnDutyDay { get; set; }
public double Holiday { get; set; }
}
Best Answer
I think the data type of the columns inside your database table is
Int32
but your data model hasdouble
. You need to change the data types of your data models toint
. Bymaterialized
it means the type it got when it ran the query on the database.