public RdlcExpression GetParsedRdlcExpression(string rdlcExpressionText, string tablixDatasetName) { var rdlcExpression = new RdlcExpression(); var regex = new Regex(RegexForFieldOnly + "|" + RegexForFieldWithDataset, RegexOptions.IgnoreCase | RegexOptions.IgnorePatternWhitespace); var matches = regex.Matches(rdlcExpressionText); var fieldDataStrings = new List <string>(); foreach (Match match in matches) { if (!fieldDataStrings.Exists(s => s == match.Value)) { fieldDataStrings.Add(match.Value); } } rdlcExpression.ExpressionText = rdlcExpressionText; rdlcExpression.FieldStrings = fieldDataStrings; rdlcExpression.Fields = MakeDataFields(fieldDataStrings, tablixDatasetName); rdlcExpression.SpacialAttributes = CheckSpecialAttributes(rdlcExpressionText); return(rdlcExpression); }
string BuildLabelText(RdlcExpression rdlcExpression) { bool hasIif = rdlcExpression.SpacialAttributes.Exists(a => a == SpacialAttribute.Iif); bool hasSwitch = rdlcExpression.SpacialAttributes.Exists(a => a == SpacialAttribute.Switch); string labelText = ""; for (int i = 0; i < rdlcExpression.Fields.Count && i < _maxFieldsToConcate; i++) { var fieldText = rdlcExpression.Fields[i].Field; var datasetName = rdlcExpression.Fields[i].Dataset; if (fieldText.Length == 0) { continue; } if (i != 0) { labelText += "_"; } // shorten length if (_maxFieldLength > 0 && fieldText.Length > _maxFieldLength) { fieldText = fieldText.Substring(0, _maxFieldLength); } if (datasetName.Equals("LookupTable")) { labelText += fieldText.Substring(0, 1).ToUpper() + fieldText.Substring(1); } else { labelText += fieldText.Substring(0, 1).ToLower() + fieldText.Substring(1); } } return(labelText); }