Is this Recursion + Linq example inefficient?
return featureWeightGroup.ChildGroups.Aggregate(Enumerable.Empty&lt;IFeatureWeightGroup&gt;(),
                                                    (allGroups, group) =&gt;
                                                    allGroups.Concat(GetLeafGroupsRecursive(group)));


It looks like it can be replaced with:  

return featureWeightGroup.ChildGroups
           .SelectMany(g =&gt; GetLeafGroupsRecursive(group));


Which probably will not be much better from performance point of view, but looks cleaner.