Сумма времени Entity Framework, сгруппированная по дате - PullRequest
0 голосов
/ 30 мая 2020

У меня следующий код, и я получаю сообщение об ошибке

Невозможно неявно преобразовать строку типа в long

Ошибка исходит из (i => i.TotalHours) .

Что я делаю не так? Или что мне изменить?

Таблица

Entity Framework Table

ViewModel

private void CalculateTime()
{
    var result = context.TimeSheets.GroupBy(o => o.StartDate)
                        .Select(g => new { StartDate = g.Key, total = g.Sum(i => i.TotalHours) });

    foreach (var group in result)
    {
        Console.WriteLine("StartDate = {0} TotalHours={1}", group.StartDate, group.total);
    }
}

Класс:

public class TimeSheet
{
    [Key]
    public int ID { get; set; }

    [StringLength(255)]
    public string MachineID { get; set; }

    public DateTime StartDate { get; set; }

    public DateTime StartTime { get; set; }

    public DateTime EndDate { get; set; }

    public DateTime EndTime { get; set; }

    [StringLength(225)]
    public string WorkDescription { get; set; }

    [StringLength(225)]
    public string ClientName { get; set; }

    [StringLength(225)]
    public string UserName { get; set; }

    public string TotalHours { get; set; }
}

1 Ответ

0 голосов
/ 30 мая 2020

В соответствии с вашей ошибкой, я считаю, что вам нужно либо изменить свой тип TotalHours на long, либо выполнить преобразование типа, попробуйте: (long)Convert.ToDouble(i.TotalHours)

var result = context.TimeSheets.GroupBy(o => o.StartDate)
                    .Select(g => new { StartDate = g.Key, total = g.Sum(i => (long)Convert.ToDouble(i.TotalHours)) });
...