Just sharing a sample code that could be used for group by and sum operation on EntityCollection.
Suppose below is the output that we want
We can use the below code for that.
// select categoryid, final forecast, final awards from SubCategory Entity // category id is lookup in SubCategory Entity EntityCollection result = orgProxy.RetrieveMultiple(new FetchExpression(fetch)); var details = from r in result.Entities.AsEnumerable() group r by new { groupByCategoryID = ((EntityReference)r.Attributes["categoryId"]).Id.ToString() } into g select new { sumFinalForecast = g.Sum(x => Convert.ToInt32(x.Attributes["finalforecast"])), sumFinalAwards = g.Sum(x => Convert.ToInt32(x.Attributes["finalawards"])), categoryId = g.Key.groupByCategoryID }; // update the parent record foreach(var detail in details) { Entity entityUpdate = new Entity("category"); entityUpdate.Id = new Guid(detail.categoryId); entityUpdate.Attributes["totalfinalforecast"] = detail.sumFinalForecast; entityUpdate.Attributes["totalfinalawards"] = detail.sumFinalAwards; orgProxy.Update(entityUpdate); }
Hope it helps..
One thought on “LINQ: GroupBy, Sum and EntityCollection in CRM”