2016-11-28 2 views
0

Я разрабатываю небольшой проект и не могу обойти хранимую процедуру sql в лямбда. Сначала мой проект - это код C# MVC. Я просмотрел некоторые сообщения здесь, но без успеха.SQL хранимая процедура для Lambda

Первый вариант, где Тоталь минут округляется до (за каждую минуту), а второй всего все секунды превращаются в минуты: Округлые каждую минуту:

select ISNULL(noT,'?') as NType,count(*) as TotalCount,SUM((Duration + 59)/60) as TotalMinutes 
    from cHis 
    where hDate between @fromDate AND @toDate And Customer_CustomerID = @CustomerID and I_ID = @I_ID 
    group by ISNULL(noT,'?') 

округляется до общей сложности в минуты:

select ISNULL(noT,'?') as NType,count(*) as TotalCount,SUM((Duration)/60) as TotalMinutes 
    from cHis 
    where hDate between @fromDate AND @toDate And Customer_CustomerID = @CustomerID and I_ID = @I_ID 
    group by ISNULL(noT,'?') 

Я открыт для предложений и, надеюсь, некоторые идеи для решений.

Благодарим за помощь заранее.

ответ

0

Вы можете сделать это, используя лямбда, сгруппировав тип, а затем сделав сумму и округляя каждую запись, получая в итоге отдельные округленные записи.

Предполагая, что вы хотели, чтобы окружить каждую продолжительность записей, лямбда будет что-то близко к этому:

cHis.Where(c=>c.Date > StartDate && c.Date< EndDate && Customer_CustomerID == CustomerId && I_ID == ID) 
.Select(c=>new {Type = (c.noT != null), c.Duration}) 
.GroupBy(c=>c.Type).ToList() 
.Select(c=> new {Type = c.Key, TotalDuration = c.Sum(d=>Math.Ceiling((decimal)d.Duration/60)), Count = c.Count()}) 
Смежные вопросы