private void SelectEntities(SimpleEntity mainEntity, IEnumerable <string> expressions) { //сущности текущего типа, подлежащие добавлению в mainEntity List <SimpleEntity> entitiesWithCurrentTypeToAdd = new List <SimpleEntity>(); bool isEmptyMain = string.IsNullOrEmpty(mainEntity.Type); foreach (string type in expressions) { EntityExpression expression = _expressions.GetExpression(type); if ((expression.SelectionType == SelectionType.False) || (isEmptyMain && (expression.SelectionType == SelectionType.Child))) { continue; } UseExpression(mainEntity, expression); } foreach (SimpleEntity entity in mainEntity.Children) { SelectEntities(entity, _expressions.GetExpression(entity.Type).UsedExpressions); } }
/// <summary> /// Возврат регулярного выражения для дочерней сущности /// </summary> /// <param name="expression">выражение для выделения сущности</param> /// <returns>регулярное выражение для дочерней сущности</returns> private string GetChildExpression(EntityExpression expression) { return(string.Format("({0})", expression.Expression.Replace(string.Format("?<{0}>", ValueGroupName), ""))); }