public List <MutationNode> CreateMutationNodeList() { var result = new List <MutationNode>(); //var lineNumbers = from m in _majorLogItems group m.LineNumber by m.LineNumber into grp select grp.Key; var lineNumbers = _majorLogItems.GroupBy(m => m.LineNumber).Select(grp => grp.Key).OrderBy(l => l); var index = 1; foreach (var lineNumber in lineNumbers) { var mutations = _majorLogItems.Where(m => m.LineNumber == lineNumber); var mutationNode = new MutationNode { Id = index++, LineNumber = lineNumber, MutationList = mutations.Select(m => new MutationRecord { Id = m.Index, MutateFrom = m.MutateFrom, MutateTo = m.MutateTo, Operator = m.MutationOperator }).ToList() }; result.Add(mutationNode); } return(result); }
public void RemoveFromParentIfEmpty(MutationNode node) { var children = node.Children.ToList(); while (children.OfType <TypeNamespaceNode>().Any()) { TypeNamespaceNode typeNamespaceNode = node.Children.OfType <TypeNamespaceNode>().First(); RemoveFromParentIfEmpty(typeNamespaceNode); children.Remove(typeNamespaceNode); } while (children.OfType <TypeNode>().Any()) { TypeNode typeNamespaceNode = children.OfType <TypeNode>().First(); RemoveFromParentIfEmpty(typeNamespaceNode); children.Remove(typeNamespaceNode); } if (!node.Children.Any()) { node.Parent.Children.Remove(node); node.Parent = null; } }
public void RemoveFromParentIfEmpty(MutationNode node) { var children = node.Children.ToList(); while (children.OfType<TypeNamespaceNode>().Any()) { TypeNamespaceNode typeNamespaceNode = node.Children.OfType<TypeNamespaceNode>().First(); RemoveFromParentIfEmpty(typeNamespaceNode); children.Remove(typeNamespaceNode); } while (children.OfType<TypeNode>().Any()) { TypeNode typeNamespaceNode = node.Children.OfType<TypeNode>().First(); RemoveFromParentIfEmpty(typeNamespaceNode); children.Remove(typeNamespaceNode); } if (!node.Children.Any()) { node.Parent.Children.Remove(node); node.Parent = null; } }