Link to home
Start Free TrialLog in
Avatar of Simbios
SimbiosFlag for Afghanistan

asked on

Questions Tags Users Badges Unanswered Ask Question

I have the following datatable, which has Units information. The Units have a surface in square meters. However the units can be split into subunits, in the datatable there is a ParentUnitID to know if that unit is splitted or not.

I need to validate that the sum of the surface of the child units, is equal to the surface of the parent unit.

 bWJwN.png

In anoter forum they helped me with this code


 var childrenByParentID = _unitDataSet.Unit.AsEnumerable().
                                     GroupBy(child => child.Field<int?>("ParentUnitId")).
                                     ToDictionary(group => group.Key);

            // Parents = children with no parent
            var parents = childrenByParentID[null];

            // Look for the first group which sum of surfaces is not the same as the parent's surface
            var invalidGroup = childrenByParentID.FirstOrDefault(group =>
            {
                bool invalid = false;

                if (group.Key != null)
                {
                    // Not the parents group
                    var parent = parents.Single(parent => parent.Field<int>("UnitID") == group.Key);

                    var totalSurface = group.Sum(group => group.Field<int>("Surface"));
                    invalid = (totalSurface != parent.Field<int>("Surface"));
                }

                return invalid;
            });

            if (invalidGroup != null)
            {
                // .. do something special
            }

Open in new window


However I got this error.

 dlaxL.png
ASKER CERTIFIED SOLUTION
Avatar of guramrit
guramrit
Flag of India image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial