Я пытаюсь создать LINQ запрос для следующих TSQL:Linq группы и совокупный
SELECT [TenantID]
,[ABC]
,COUNT(*) [TotalSKU], SUM([QtyOnHand]) AS [SOH],SUM([QtyOnHand]*[Price]) AS [SOH_Value]
,SUM ([QtyOnOrder]) AS SOO
,SUM ([QtyOnOrder]*[Price]) AS [SOO_Value]
FROM [OMS_StockStatus] GROUP BY [TenantID], [ABC]
я справиться с этим до сих пор:
var res = from a in db.OMS_StockStatus
group a by new { a.TenantID, a.ABC } into g
select new ABCDashboard { TenantID = g.Key.TenantID, ABC = g.Key.ABC, TotalSKU = g.Count(),
SOH = g.Sum(t => t.QtyOnHand), SOH_Value = g.Aggregate((c,d) => decimal(c.QtyOnHand) * d.Price)};
Но я получаю следующее сообщение об ошибке:
«System.Linq.IGrouping» не содержит определения для «Агрегат» и лучший метод перегрузки расширения »System.Linq.Enumerable.Aggregate (System.Collections.Generic.IE исчислимый, System.Func)»имеет некоторые недопустимые аргументы
Это мое определение сущность:
public partial class ABCDashboard
{
public short TenantID { get; set; }
public string ABC { get; set; }
public double TotalSKU { get; set; }
public Nullable<double> SOH { get; set; }
public Nullable<decimal> SOH_Value { get; set; }
public Nullable<double> SOO { get; set; }
public Nullable<decimal> SOO_Value { get; set; }
}
В OMS_StockStatus, QtyOnHand вдвое? и цена удваивается?
Синтаксис здесь ошибка? 'decimal (c.QtyOnHand)', должен быть '(десятичным) c.QtyOnHand', no? – CodingIntrigue
@RGraham, я попробовал это изначально, но получал ошибку. Пожалуйста, обратитесь к моему ответу на Codeman ниже. –
Вам нужно предоставить некоторые сведения о ваших полях. Какой тип 'SOH_Value'? Является ли значение 'QtyOnHand' допустимым? Если да, то каков вам результат «QtyOnHand * Price»? Если он должен быть нулевым, то что должно означать «SOH_Value»? – CodingIntrigue