اگر اشتباه نکنم کلاس order کلاسی از مدل دیتابیس هست. در اینجا به کلاسی نیاز دارید که برای نمایش استفاده بشه و تاثیری روی مدل دیتابیس نداشته باشه و می بایست با کلاس order متفاوت باشد. پس کلاسی غیر از order ایجاد کنید و نوع متد و کوئری رو اصلاح کنید. (معمولا زمانی که نیاز داشته باشند در select مقداری را new کنند یا بدون نوع در نظر میگیرند یا در صورتی که نیاز به نوع باشد یک کلاس ویومدل ایجاد میکنند)
اما با یک ترفند هم میشه به جواب رسید
کافیه در لایه dal یک متدprivate دیگر ایجاد کنید که توسط متد public فراخوانی شود. متد private رو میتونید به صورت ExtensionMethod دربیارید.
public IEnumerable<order> sum()
{
return GetSumPriceForEachOrderGroup(database.orders);
}
private IEnumerable<order> GetSumPriceForEachOrderGroup(IEnumerable<order> sourceOrders)
{
return sourceOrders
.GroupBy(i => i.Name)
.Select(g => new order() { Name = g.Key, Price = g.Sum(m => m.Price) })
.ToList();
}