public void Check(Questionnaire questionnaire, string expression) { if (string.IsNullOrEmpty(expression)) { return; } //проверяем имена вопросов foreach (Match m in Regex.Matches(expression, QuestNamePattern)) { if (questionnaire.All(q => q.Id != m.Value)) { throw new Exception("Вопрос " + m.Value + " не найден"); } } //проверяем синтаксис Calculate(new Anketa(), new Condition { Expression = expression }); }