using System; using System.Collections.Generic; using System.Linq; namespace VCommon.DataModel { public static class TreeCopy { public static IEnumerable CreateFrom( IEnumerable source, Func, TTo> create, Func keySelector, Func valueSelector, Func> childSelector) { return source.Select(p => create( keySelector(p), valueSelector(p), CreateFrom(childSelector(p), create, keySelector, valueSelector, childSelector) ) ); } } }